我不太了解h.264,但问题是我在h.264中有一个mp4容器中的这个视频,我想通过UDP流.
我的问题很简单,在对视频进行编码时是否可以进行任何调整,以便它能够相当容忍某些"轻"数据包丢失?
我知道压缩视频通常每N帧有一个关键帧,然后在它们之间只发送增量.我可以想象h.264应该比那复杂得多,所以它可能不是那么简单.
更确切地说,我一直在进行一些实验,并意识到只需从视频流中删除1024个字节,我就会从丢失和开启的角度将其完全"无法播放".
我想要的是它能够容忍这样的光损失,这可能吗?
谢谢
纳尔逊
这取决于你丢失的数据.H264流中的某些数据不是可能丢失的数据.例如,如果您丢弃1024字节的实验碰巧是您发送的前1024个字节,那么您可能删除了序列参数集和图片参数集(SPS/PPS),这基本上是告诉解码器如何的信息解释传入的信息.您也可能不能只从流中删除1024个字节; 通常H264是打包的,所以不管怎么说都不会发生.
所以H264确实包含一些真正不"可丢弃"的小数据; 许多流媒体协议(如RTSP)通过明确说明您不应通过有损传输通道发送此类信息,而是在SDP交换期间(通过TCP发生)来明确这一点.
就损耗容限而言,H264确实具有有助于损失容限的功能(ASO,FMO等),但实际上大多数编码器都不支持它们.如果可以,我会使用x264; 他们的低延迟流式传输配置据称即使丢包率高达20%或更高也能正常工作.如果您的H264已经编码,则没有太多工作要做.您的视频已经过编码,您必须按原样播放.