Skip to main content

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