我想了解当HTTP /H.264编码的视频被封装到传输流容器(用于mpeg4 Live streaming等流媒体协议)时,I、B、P图像是如何打包和多路复用的。对于mpeg2编解码器视频,据我所知,每个PES在新的TS数据包中开始,但在单个PES中可以有I,B,P图片的重叠。
但是对于mpeg4视频,谁能解释一下I,B,P帧是如何被多路复用到PES的?它们能否在PES中重叠,这意味着单个TS数据包丢失可能会丢失多个I/B/P帧?我试图浏览RFC和其他一些文档中的有效负载结构,但无法清楚地理解。
发布于 2015-09-30 17:43:20
I、B、P帧不在PES分组中多路复用,因为不同帧具有不同的DTS和PTS,但是在单个PES分组中只能指定一对DTS/PTS。多路复用器所做的是将帧( I、B或P)打包在PES包中,将DTS和PTS放在包上,仅此而已。下一帧将被打包到另一个PES中。有时,取决于编码器和多路复用器,当帧非常大(例如HD视频的I帧)时,它被打包成具有相同DTS/PTS的多个PES分组。
然而,将h264流的SPS和PPS与I帧一起打包到单个PES分组中。这意味着如果包含SPS和PPS的TS分组丢失,则解码器将不得不等待,直到发送下一个SPS和PPS,因为如果没有它们,解码器就不能解码该流。
请注意,这只是大多数(如果不是所有)编码器和多路复用器的工作方式。该标准没有(也不可能)描述每一种情况。
发布于 2015-09-26 00:35:22
作为快速总结,通常在广播应用中,PES不会包含多于一个的视频帧数据。因此,当单个TS数据包丢失时,我们不应该丢失多个帧细节。话虽如此,分组丢失将影响后续帧的质量,并且如果它碰巧是参考帧,则失真将非常高。
因此,在解码器方面,我们需要有纠错机制。前向纠错是连续视频传输系统中常用的差错恢复机制。此外,当数据包丢失时,人们会尝试重新传输丢失的数据包。只要网络延迟很低,这种方法就可以正常工作。然而,对于交互式TV,这些传统错误恢复机制可能不是很适合。
https://stackoverflow.com/questions/32773707
复制相似问题