Skip to content

WebRTC-codecs

WebRTC 默认支持多种音视频编解码器(codec),它们的支持情况取决于浏览器实现、平台、操作系统等。以下是 WebRTC 常用的编解码器及其说明:

🎥 视频编解码器(Video Codecs)

编解码器简介浏览器支持说明
VP8开源,谷歌开发,WebRTC 默认支持的编解码器之一✅ Chrome, Firefox, Safari, Edge实时性能好,压缩率适中,支持视频通话和录制
VP9VP8 的后续版本,压缩效率更高,但编码复杂度高✅ Chrome, Firefox, Edge(部分)更节省带宽,适合高质量低码率,但实时性略差于 VP8
H.264 (AVC)工业标准,广泛支持,硬件加速好✅ Chrome, Firefox, Safari, Edge通用性强,支持硬件编解码,适合跨平台场景
AV1新一代高压缩率视频编解码器,免专利费✅ Chrome, Firefox(实验性或部分)编码复杂度高,延迟大,不适合低延迟实时场景(目前)

🔊 音频编解码器(Audio Codecs)

编解码器简介浏览器支持说明
Opus为实时通信优化的现代编解码器✅ 所有主流浏览器WebRTC 默认音频编解码器,支持宽频带、窄频带,音质好,适应性强
G.711 (PCMU/PCMA)传统音频编码标准✅ 大部分浏览器延迟低,占用带宽高,音质一般(多用于兼容 PSTN 电话系统)
ISAC / iLBC谷歌早期开发的低码率语音编解码器Chrome 内置支持(已逐步弃用)老旧,Opus 已完全替代其功能

📦 编解码器协商

WebRTC 使用 SDP (Session Description Protocol) 来协商编解码器:

  • 浏览器通过 RTCPeerConnection 交换 SDP 报文。
  • 报文中会列出本地支持的编解码器(带优先级)。
  • 双方从交集中选择兼容的 codec。
  • 可以通过 RTCRtpSender.setCodecPreferences() 或修改 SDP 强制某个 codec

例如,以下是 SDP 中的 codec 列表示例:

ini
m=video 9 UDP/TLS/RTP/SAVPF 96 98 100
a=rtpmap:96 VP8/90000
a=rtpmap:98 VP9/90000
a=rtpmap:100 H264/90000

✅ 小结:推荐组合

场景推荐视频 codec推荐音频 codec
通用实时通话VP8Opus
带宽受限,需高压缩率VP9 / H.264Opus
与硬件设备兼容H.264G.711 / Opus
高质量录制(非实时)AV1Opus