在仅包含I帧和P帧的H.264流中,我想知道在丢包存在的情况下,是否有可能以相对简单的方式插入任何丢失的P帧"。
想象一下:我P P P ...(原创) - > I X P P ...(已收到)
I P P P ... - >我P X P ...等等......
查看H.264图块看起来并不那么容易......(例如High-Profile block diagram)。
目前,我正在使用H.264动态有效载荷类型96和97;基线和高视频配置文件仅用于接收视频,以防它有用。
答案 0 :(得分:1)
如果整个框架丢失,简短回答:不,没有“相对简单的方法”。即使你使用每个H264错误隐藏技巧,你最终会得到后续P帧所指的丢失的像素数据,并且会产生视觉上不愉快的结果。
现在,失去整个画面非常罕见。如果数据包丢失如此严重,恢复的最佳方法是重新传输丢失的数据包(如果延迟允许),或者甚至向服务器请求新的I帧(我假设你有强大的网络堆栈,并且反馈循环到服务器)。
要解决数据包丢失问题,更好的方法是关注弹性和数据冗余。我强烈建议在h264和Error resiliency and concealment中使用演示文稿another paper on the same subject - 它们描述了许多缓解技术,如灵活的宏块/切片排序和冗余切片。不幸的是,我无法提供现有实施的链接 - 实时视频流是一个非常狭窄的领域,所有进行积极研究和开发的公司都将其实施保密。