【问题标题】:MPEG Transport Stream Continuity Counters [closed]MPEG传输流连续性计数器[关闭]
【发布时间】:2014-08-10 05:14:17
【问题描述】:

我正在对跨 10GB MPLS 网络的 IPTV 第 3 层多播 VPN 进行故障排除。

只有某些高清频道出现严重的冻结和平铺现象;所有其他标清和高清频道都可以正常工作。我们的 IPTV 视频监控设备通过监控连续性计数器来检测和报告丢包。我已经询问了我们拥有的每一个设备供应商,并阅读了我能找到的每一个 .pdf,但似乎没有人确切知道:

  1. MPEG 传输流连续性计数器如何/何时/何处适合传输流?
  2. 正在计算传输流中的哪些数据包/帧?
  3. 为什么报告的数据包丢失似乎以 16 (0, 16, 32) 为增量发生?
  4. 怎么会有0丢包的错误情况?
  5. PCR 值如何/何时/何处适合传输流?

【问题讨论】:

    标签: stream mpeg transport


    【解决方案1】:

    这是很多问题!让我们澄清一下:

    1. 连续性计数器 (CC) 在传输流 (TS) 的每个传输数据包 (TP) 的标头中携带。
    2. 每个 TP 在报头中也有一个数据包标识符 (PID)。每个 PID 都有自己的 CC。根据维基百科,每当 TP 具有有效负载时,任何给定 PID 的 CC 都会增加,但我认为它实际上在每个新 TP 上都会增加... [EDIT]:CC 仅在有效负载标志时增加是真的(参见下面的 Mike Reedel 评论)
    3. 实际上,由于 CC 是 4 位,因此值应该从 0x0 变为 0xF,然后从 0x0 重新开始。
    4. 有些人对标准不小心,在复用 TS 期间,可能会发生 CC 未正确递增的情况:在这种情况下,您没有丢失任何数据包,但由于 CC 损坏,您的工具正在报告一个错误。但是,错误可能发生在 TS 传输期间的任何地方,包括可能无法以正确速率采样的监控工具。
    5. 节目时钟参考 (PCR) 是一个时间戳,它定期插入 TS 中,为解码器提供准确的 27 Mhz 时钟。根据标准,应每 40ms 重复一次。携带 PCR 的 PID 没有任何义务,但大多数情况下它是视频 PID:您需要查看 PMT 以了解 PCR 是哪个 PID。

    一些参考资料:

    【讨论】:

    • 在 #2 上,ContinuityCounter 仅在有效负载标志为真时递增。
    • 此外,连续性计数器不会因重复数据包或设置不连续性标志而增加。参见 ISO/IEC 13818-1,第 2.4.3.3 节。
    • 我想让自己确信 Mike Reedell 所说的是真的,即“仅当有效负载标志为真时,连续性计数器才会增加”。使用 tsduck 和 tsdump 实用程序(为简单起见,仅查看前三个数据包),作为 PAT、PMT 和视频(PID481)的数据包 0、1 和 2 每个都有“有效负载:是”。但是连续性计数器只在视频数据包中变为 1...
    • @Baba.S 每个 PID 都有自己的计数器。因此,您无法将 PAT、PMT、视频 PID481 等的 CC 相互比较。 CC 仅在查看具有相同 PID 的数据包时才有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2015-05-02
    • 2013-10-04
    • 2021-06-20
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多