Jay*_* P. 8 google-chrome packet-loss webrtc licode
我们正在使用licode MCU将录制的视频从Google Chrome流式传输到服务器.Google Chrome没有第二个实例来处理反馈,服务器必须执行此操作.
我们遇到的一件事是当丢包丢失帧并且视频不同步时.这会导致非常差的视频质量.
在ExternalOutput.cpp中,有一个地方可以检测到当前收到的数据包没有单调增加.在这里你可以看到它丢弃当前帧并重置搜索状态.
我想知道如何修改它,以便它可以从这个数据包丢失中恢复.是否在当前序列号上提交NACK数据包?我还读到有一种模式,谷歌Chrome提交RED数据包(冗余)来处理数据包丢失.
小智 5
媒体处理应用程序有两个主要的不同层:
传输层与编解码器无关,处理 RTP/通用 RTCP 数据包。在这一层有几种机制可以解决数据包丢失/延迟/重新排序的问题:
在编解码器层上,还有一些与质量下降作斗争的机制:
为了克服Licode 的缺陷,您应该:
首先,它忽略任何数据包延迟和重新排序。因此,您应该实现机制(抖动缓冲区),它将处理数据包重新排序/网络抖动并确定数据包丢失(也许,您可以重用 webrtc/freeswitch 机制)
当您的应用程序确定数据包丢失时,您应该向远程对等点发送反馈( RTCP NACK )
此外,您还应该尝试处理ffmpeg(用于解码视频并将其保存到文件)解码错误,并将 FIR(快速帧内请求)/ PLI发送到远程对等点,以在出现错误时请求关键帧。
请注意,p.2,3 需要适当的显式协商(通过 SDP)。
只有在通过了所有这些情况之后,您才可以看看 FECC/RED,因为它确实更难以处理和实施。
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |