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

时间:2015-11-17 19:05:50

标签: google-chrome webrtc licode

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

我们添加了服务器端code,每5秒向客户端发送一次REMB(带宽)数据包。这会导致客户端提高比特率,从而使视频质量良好。

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

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

我认为PLI意味着:

PLI    - Picture Loss Indication

1 个答案:

答案 0 :(得分:3)

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

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

只有在增长过快时才需要发送 REMB 以限制吞吐量,例如,如果接收方报告中提供的反馈不准确。