如何在WebRTC视频录制中使用PLI数据包

Jay*_* P. 6 google-chrome webrtc licode

我们正在使用licode MCU将视频从Google Chrome流式传输到服务器并进行录制.这里棘手的部分是只涉及一个Chrome浏览器,因此服务器端代码必须处理向客户端发送反馈.

我们添加了服务器端代码,每5秒向客户端发送一次REMB(带宽)数据包.这导致客户端增加比特率以使视频质量良好.

我们用PLI数据包做了类似的事情,试图提高视频质量.录制的视频有块状文物,看起来不太好.当前代码每0.8秒发送一次PLI,这导致客户端发送一个关键帧(全帧视频).这解决了较差的视频质量,因为它强制关键帧,但是当丢包(wifi网络)时,它很快就会变坏.

我的问题是如何使用这些PLI数据包?

我认为PLI意味着:

PLI    - Picture Loss Indication
Run Code Online (Sandbox Code Playgroud)

jch*_*jch 4

您的应用程序应发送至少三种 RTCP 反馈:

  • 每秒左右准确的接收器报告 (RFC 3550),向发送器指示数据包丢失和抖动率;这将导致发送方根据链路特性调整其吞吐量;
  • 每当丢失数据包时,都会发出通用 NACK (RFC 4585);这将通过导致发送方重新发送任何丢失的数据包来避免损坏;
  • 每当在给定时间间隔(例如两秒)内没有看到关键帧时,就会生成 PLI (RFC 4585)。

仅当吞吐量增长太快时才需要发送 REMB 以限制吞吐量,例如,如果接收器报告中提供的反馈不准确。