WebRTC视频录制中应该如何使用PLI包
How should PLI packets be used in WebRTC video recording
我们正在使用 licode MCU to streaming video from Google Chrome to the server and record it. The tricky part here is that there is only one Chrome browser involved so the server-side code 来处理向客户发送反馈。
我们添加了服务器端 code 以每 5 秒向客户端发送一次 REMB(带宽)数据包。这会导致客户端提高比特率,以便视频质量良好。
我们对 PLI 数据包做了一些 similar 以尝试提高视频质量。录制的视频有块状伪影,看起来不太好。当前代码每 0.8 秒发送一次 PLI,这会导致客户端发送一个关键帧(完整的视频帧)。这修复了视频质量差的问题,因为它会强制关键帧,但当出现数据包丢失(wifi 网络)时,它很快就会再次变差。
我的问题是应该如何使用这些 PLI 数据包?
我认为 PLI 的意思是:
PLI - Picture Loss Indication
您的应用程序应至少发送三种 RTCP 反馈:
- 大约每秒一次准确的接收方报告 (RFC 3550),向发送方指示数据包丢失和抖动率;这将导致发件人调整其吞吐量以适应 link 特征;
- 一个通用的 NACK (RFC 4585) 每当它错过一个数据包时;这将通过导致发件人重新发送任何丢失的数据包来避免损坏;
- PLI (RFC 4585) 每当它在给定的时间间隔(例如两秒)内没有看到关键帧时。
只有在吞吐量增长过快时才需要发送 REMB 来限制吞吐量,例如,如果接收方报告中提供的反馈不准确。
我们正在使用 licode MCU to streaming video from Google Chrome to the server and record it. The tricky part here is that there is only one Chrome browser involved so the server-side code 来处理向客户发送反馈。
我们添加了服务器端 code 以每 5 秒向客户端发送一次 REMB(带宽)数据包。这会导致客户端提高比特率,以便视频质量良好。
我们对 PLI 数据包做了一些 similar 以尝试提高视频质量。录制的视频有块状伪影,看起来不太好。当前代码每 0.8 秒发送一次 PLI,这会导致客户端发送一个关键帧(完整的视频帧)。这修复了视频质量差的问题,因为它会强制关键帧,但当出现数据包丢失(wifi 网络)时,它很快就会再次变差。
我的问题是应该如何使用这些 PLI 数据包?
我认为 PLI 的意思是:
PLI - Picture Loss Indication
您的应用程序应至少发送三种 RTCP 反馈:
- 大约每秒一次准确的接收方报告 (RFC 3550),向发送方指示数据包丢失和抖动率;这将导致发件人调整其吞吐量以适应 link 特征;
- 一个通用的 NACK (RFC 4585) 每当它错过一个数据包时;这将通过导致发件人重新发送任何丢失的数据包来避免损坏;
- PLI (RFC 4585) 每当它在给定的时间间隔(例如两秒)内没有看到关键帧时。
只有在吞吐量增长过快时才需要发送 REMB 来限制吞吐量,例如,如果接收方报告中提供的反馈不准确。