【问题标题】:mpeg-ts fundamentalmpeg-ts 基础
【发布时间】:2012-06-27 03:13:53
【问题描述】:
我阅读了一些关于 mpeg 传输流的教程,但有两个基本问题我不明白:
1. mpeg-ts muxer从音视频中接收pes包,输出mpeg-ts包。它是如何进行这种混合的?是否每当来自任何程序的数据包等待其输入时,复用器就会唤醒并将 pes 切片处理为 mpeg-ts ?
2. 用户可以选择mpeg-ts muxer输出的比特率吗?编码的速率和 mpeg-ts 的速率有什么关系?
非常感谢,
跑
【问题讨论】:
标签:
stream
mpeg
transport
【解决方案1】:
MPEG2-TS 多路复用是一种复杂的艺术形式。建议阅读:MPEG2-TS 规范、SPTS/MPTS、VBR 与 CBR、假设参考解码器和缓冲区(EB、MB、TB)、抖动和漂移。
您的问题的一个非常简短的答案可以总结如下:
对于每个编码器,在线路的另一端有一个解码器,它想要在每个帧间隔显示一个视频帧(或音频帧)。这个帧需要在它的呈现时间之前被解码。如果此帧使用其他帧作为参考,则它们也需要在呈现之前进行解码。
多路复用时,数据必须在呈现之前有足够的时间到达。要在时间 n 呈现的视频帧必须在时间 n - x 在解码器处可用,其中 x 是时间度量,取决于解码器的缓冲速率(参见 MB、TB、EB)。如果 TS 比特率太低,就会出现“下溢”,视频无法及时进入解码器。如果 TS 比特率太大,就会发生“溢出”,并且缓冲区必须丢弃数据包,这也会产生视觉伪影。