RFC 7742 - WebRTC视频处理和编解码器要求
发布日期: 2016年3月
作者: A.B. Roach
摘要
本文档为WebRTC应用在网络上发送和接收视频提供了指导。规定了所需的视频处理以及视频编解码器及其参数。
强制编解码器
VP8 (必须支持)
所有WebRTC实现必须支持VP8编解码器:
编解码器: VP8
Profile: 无 (单一profile)
最大分辨率: 至少1280x720
最大帧率: 至少30fps
优点:
- ✅ 免费开源
- ✅ 低延迟
- ✅ 良好的压缩率
- ✅ 硬件加速支持广泛
H.264 (可选但推荐)
编解码器: H.264/AVC
Profile: Constrained Baseline (CBP)
Level: 至少Level 3.1
优点:
- ✅ 硬件加速普遍
- ✅ 更好的压缩率
- ✅ 移动设备友好
视频处理要求
1. 摄像头源视频
推荐特性:
- 📷 自动对焦
- 💡 自动曝光
- 🔲 自动白平衡
- 📐 根据带宽动态调整分辨率
- 🎬 根据编码动态调整帧率
2. 色彩空间
默认: sRGB色彩空间
视频扫描模式: Y'CbCr 4:2:0
3. 屏幕共享
特殊要求:
- 支持高分辨率 (1920x1080+)
- 优化文字清晰度
- 处理屏幕刷新率
- 支持部分屏幕更新
编解码器参数
VP8参数
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 nack # 支持重传
a=rtcp-fb:96 nack pli # 关键帧请求
a=rtcp-fb:96 ccm fir # 完整帧请求
H.264参数
a=rtpmap:97 H264/90000
a=fmtp:97 profile-level-id=42e01f;packetization-mode=1
自适应行为
WebRTC必须根据网络条件调整:
网络状况 → 调整策略
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
带宽充足 → 高分辨率 + 高帧率
带宽受限 → 降低分辨率/帧率
丢包严重 → 降低帧率,启用FEC
延迟增加 → 减小缓冲区
互操作性
确保不同浏览器和设备之间的兼容性:
Chrome ←→ Firefox ←→ Safari ←→ Edge
↓ ↓ ↓ ↓
VP8 (强制支持) + H.264 (可选)
WebRTC视频标准确保了全球数十亿设备的互操作性。
浏览器支持:
- Chrome/Edge: VP8 + H.264
- Firefox: VP8 + H.264
- Safari: VP8 + H.264
相关RFC:
- RFC 8825 - WebRTC概述
- RFC 8831 - WebRTC数据通道
- RFC 8838 - Trickle ICE