何时发送重复的传输流数据包?收到重复的 TS 数据包时,解复用器应做什么?
答案1
MPEG-2 最多允许两个连续的数据包具有相同的 PID 和相同的 CC 值。如果原始数据包包含重要信息,则可以包含重复的相同数据包以提供冗余。在这种情况下,如果第一个数据包丢失或损坏,可以使用重复的数据包代替。在解码器上,您可以根据原始数据包是否有效来丢弃或使用它。
不相同的重复数据包也可用于保存额外信息,而无需插入另一个 PID。例如,它们可用于加密/内容加扰。
答案2
MPEG2 系统标准 (13818-1) 规定:
“在传输流中,重复数据包可以作为两个(且只能是两个)具有相同 PID 的连续传输流数据包发送。重复数据包应具有与原始数据包相同的连续性计数器值,并且适应性字段控制字段应等于“01”或“11”。在重复数据包中,原始数据包的每个字节都应重复,但程序时钟参考字段(如果存在)应编码有效值。”
上面的陈述中有一个非常重要的点 - “程序时钟参考字段除外”。在某些情况下,重复的数据包可能与原始数据包不同。
如果解码器检测到两个连续的数据包具有相同的 PID 和 CC,并且未发出 PCR(程序时钟参考)信号,则应比较这些数据包。如果它们相同,则第二个数据包是第一个数据包的副本。但是,如果传输了 PCR,则解码器应比较两个数据包(不包括 PCR 字段)。如果它们相同(不包括 PCR),则第二个数据包是第一个数据包的副本。