yangkang2021.github.io

WebRTC的nack,red,fec

一. nack/red/fec的支持情况和默认开启

默认抗丢包方案:音频靠opus的带内fec,视频靠nack重传。

类型 nack red fec mediasoup-fec
音频 支持,默认不开启 支持,默认不开启 只支持opus的带内fec,只有opus默认开启 支持
视频 支持,默认开启 支持,只有h264默认开启 支持,只有h264默认开启ulpfec 不支持,因消耗cpu

分析一下原因:

  1. 为什么视频只用nack+默认不都开启red和fec?
    • red就是重复发包,而ulpfec只是red套壳且没法跟nack并存。
    • 视频数据量大,red和ulpfec直接重复发包,成本太大不值得
    • flexfec:web端google没集成,只能native。
  2. 为什么音频默认不开启nack和red?
    • 音频码率占比小,当音频需要red和nack拯救时,视频基本已没法看了。
    • 音频nack和red它适合纯音频场景。
  3. tx是怎么做到抗50%丢包?
    • 分析来看nack+flexfec可能做不到,具体方法未知

总结:

二. 简单总结

三. 音频开启red抗丢包

四.经验

五.问题