2015-09-15 55 views
0

在仅包含I帧和P帧的H.264流中,我想知道在丢包的情况下,是否有可能将丢失的P帧内插到“相对容易的方式“。RTP上的H.264:P帧插值

试想:IPPP ...(原创) - > IXPP ...(收)

IPPP ... - > IPX P ...等等...

展望在H.264图块中,它看起来并不那么容易......(例如High-Profile block diagram)。

目前,我正在使用H.264动态有效载荷类型96和97;基线和高视频配置文件仅用于接收视频,以防情况有所帮助。

回答

1

如果整个框架丢失,简短的回答:不,没有“相对简单的方法”。即使你采用了每个H264错误隐藏技巧,你最终都会得到P帧所指的丢失的像素数据,以及视觉上令人不快的结果。

现在,丢失整个帧非常罕见。如果数据包丢失如此严重,恢复的最佳方法是重新传输丢失的数据包(如果延迟允许)或者甚至向服务器请求新的I帧(我假设您有可靠的网络堆栈并带有反馈循环到服务器)。

要解决数据包丢失问题,更好的办法是关注弹性和数据冗余。我强烈推荐在h264和another paper on the same subject中介绍Error resiliency and concealment--它们描述了许多缓解技术,如灵活的宏块/片段排序和冗余片段。不幸的是,我无法提供现有实施的链接 - 实时视频流是一个非常狭窄的领域,所有运行积极的研究和开发的公司都保持其实施秘密。

+0

当你指向“整个帧”......你指的是整个P帧?就我而言,当我开发处理RTP数据包的客户端应用程序时,我认为我不能从错误恢复技术中获益。他们必须在服务器部分实施......我错了吗? – aloplop85

+0

是的,所有的技术都需要客户端和服务器的支持。那么它是什么样的流?它是否以预定的时间间隔插入I帧? – smirnoff

+0

是的,这个数据流以预定义的时间间隔(例如15 @ 12 FPS,30 @ 25 FPS,等等......)带有I帧。 – aloplop85