传输流中的时间戳验证

传输流中的时间戳验证

 2023 年 6 月 14 日

 

传输流 (TS) 是 IPTV、DVB/ATSC 和 OTT 数字电视网络中流行的媒体数据流格式。为了生成和回放传输流,使用了 PTS、DTS、PCR 时间戳。时间戳验证可确保视频、音频和其他媒体数据之间的流不同步。本文重点介绍 TS 生成过程,详细描述时间戳和时间戳验证方法,并包括使用辅助传输流分析工具的说明和屏幕截图。

I 复用,或生成 TS

该过程可以描述如下。

1. 一系列压缩视频帧、音频样本、隐藏式字幕和图文电视页面被封装到 PES(分组基本流)数据包中。

  • PES 数据包的长度可变,具体取决于封装数据的单元大小。
  • 每个PES数据包至少有一个时间戳、PTS(呈现时间戳)和可能的DTS(解码时间戳)。
  • PTS指示应回放相应基本流(ES)(例如视频帧、音频样本、图文电视页面或隐藏字幕)的时间点。
  • DTS(解码时间戳)指示视频帧应该被解码的时间点。
  • 如果 DTS 的值与 PTS 不同,则指定 DTS。

2. 每个 PES 又被分段为固定大小(188 字节)的 TS(传输流)数据包。1

  • 如果PTS和DTS是时间值,则必须有一个包含这些值的连续时间尺度(时钟)。这样的时间尺度由PCR(程序时钟参考)时间戳形成。它们在 TS 数据包标头中指定。

3. 开销数据也被添加到流中,包括PSI/SI(节目特定信息/系统信息)表、SCTE-35以及作为TS的一部分传输的其他数据。因此,传输流是 TS 数据包的序列(图 1)。

 

图 1 – 传输流的结构

多路复用器、DVB/ATSC 调制器和 OTT 打包器使用 PTS 来同步视频、音频和其他类型的 ES。 PCR 标记用于同步发送器和接收器端之间的时钟。
错误或不准确的时间戳将导致同步丢失、延迟以及广播和播放问题。因此,时间戳验证对于提供高质量体验至关重要。本文重点详细分析时间戳验证方法。

II 根据 ETSI TR 101-290 验证 TS

这是DVB数字电视标准的技术规范。该标准定义了三个优先事项;时间戳错误被分配为第二优先级。
本文将探讨该标准所涵盖的错误。 ATCS 也有类似的规范。其时间戳验证方法的不同之处在于 ATCS 对于每个错误都有多个阈值,基本阈值与 ETSI TR 101-290 的阈值相同。同样的方法也用于验证 IPTV 和 OTT 网络中的 TS。
为了分析捕获的流,使用了 Elecard Stream Analyzer。应用程序验证流并在 TR 101-290 窗口中显示它检测到的错误。流分析器有助于确保捕获的流不包含以下错误(图 2):

图 2 – ETSI TR 101-290 错误

PCR 重复错误:当两个连续 PCR 值之间的增量超过 40 毫秒时检测到。该错误已从规范中删除,因为专家认为 40 毫秒的阈值要求过于严格,超过该值不会导致明显的问题。 
PCR 不连续指示器错误:当两个连续 PCR 值之间的增量超过 100 毫秒时检测到。 
PCR 准确度:通过预期 PCR 值与实际 PCR 值之间的差异来指示所选程序中 PCR 定位的准确度。当该差异超过 500 ns 的阈值时,就会检测到错误。 PCR定位越准确,转播越流畅。
PTS错误:PTS时间戳重复周期超过700ms2时发生。2
考虑帧率为 25 的视频流,这意味着每秒显示 25 帧。在此速率下,一帧的显示持续时间或两个连续 PTS 时间戳之间的增量为 40 毫秒。根据规范,当 PTS 增量超过 700 ms 时就会检测到错误。尽管 41 毫秒到 700 毫秒的增量不被视为错误,但如此长时间的计时表明缺乏数据,或者换句话说,广播间隙。在大多数情况下,ETSI TR 101-290 验证就足够了,但并不完整,因此我们进入第二阶段。

三、时间戳动态可视化分析

流分析器可以显示任何整数参数的图。要生成 PTS 或 DTS 图,请在资源管理器窗口中设置感兴趣的流旁边的 PES 复选框。 PES 数据包列表显示在中央窗口中。选择任何数据包,然后右键单击“属性”窗口中的 PTS 值并选择“添加到图形控件”。图形窗口中将出现一个绘图。生成 PCR 图的步骤类似,但与 PTS/DTS 不同,PCR 时间戳存储在 TS 数据包中。
PTS 和 DTS 的分辨率为 90 kHz。最大值为 233 – 1,之后会发生翻转。这些值应随着每个连续的 PES 数据包单调增加。对于显示序列中的视频帧来说也是如此。

在压缩过程中,编码器可以对帧重新排序并创建两个序列:

  • 流序列,其中帧被压缩并打包成流;
  • 显示序列,其中呈现帧。

与 PTS/DTS 类似,PCR 值应单调增加。

参考时间戳动态图看起来像一条直线(图 3)。

图 3 – PTS、DTS 和 PCR 动态

任何偏差都表明存在多路复用问题,这可能是由输入流中的错误或不正确的转码器/多路复用器设置引起的(图 4)。

图 4 – 非均匀增加的 PTS 时间戳

考虑 OTT 案例。播放器按顺序播放 HLS TS 块。每个 HLS 块都是通过将单个 TS 分段为多个单独的文件来生成的。但 OTT 只是一种分发方式。因此,几个顺序连接的 HLS 块的图应该看起来像一条单调增加的直线,没有间断。

IV ETSI TR 101-290 和线性时序图没有错误并不能保证流没有问题。

需要额外检查时间戳排序。我们使用时间动力学工具来实现:

1. 打开“时间动态”窗口,选择“仅 PTS”模式,并将“视频 PID”指定为“基本”选项,将“音频 PID”指定为“补充”选项。该图显示视频和音频时间戳之间的总变化为 3 秒(图 5)。

图 5 – 视频/音频 PTS 时间戳的变化

PTS变化越大,数据同步所需的缓冲区就越大。工作范围可达 1 秒。超过阈值可能会导致以下后果: 

  • 可能会发生额外的延误;
  • 多路复用器、调制器或打包器可能无法生成有效的 TS,这从锯齿状的广播图和日志中的大量错误中可以明显看出;
  • 机顶盒和播放器很可能无法正确播放生成的流,从而导致图像抖动或冻结以及视频与音频同步丢失。

需要注意的是,绘图不应显示增量的上升或下降趋势,因为这将表明时间戳逐渐发散,这肯定会导致上述问题。

2. 选择仅 PTS 模式、视频 PID 和 PTS/DTS 动态。该图显示了两个连续视频 PTS 值之间的差异。可以为音频 PTS 生成类似的图。 
该图显示了阈值为 700 ms 的第二优先级 PTS 错误(图 6)。.

图 6 – 视频 PID 的 PTS 时间戳增量

3. 选择PTS/DTS 模式、视频PID 和PTS/DTS 动态。该图显示了 PTS 和 DTS 之间的差异。在正常情况下,该图看起来像一个常数,但上部区域可能会出现轻微波动。上升或下降趋势表明时间戳的分布。负增量对应于DTS值大于PTS的情况,但不应该是这样。这两种选项都可能导致流传输端和接收端同步丢失。 (图7)。

图 7 – 视频 PID 的 PTS/DTS 时间戳增量

4. PCR 动态显示两个连续 PCR 值之间的差异。阈值为 40 毫秒和 100 毫秒。当超过这些值时,将分别检测到第二优先级 PCR 重复错误和 PCR 不连续指示符错误(图 8)。

图 8 – 视频 PID 的 PCR 时间戳增量

5. 选择视频 PID 或音频 PID 和 PTS/PCR 动态。该图显示了同一时间点 PTS 和 PCR 时间戳之间的变化。工作范围可达 1 秒。在图 9 中,增量为 3 秒,表明上面第 1 点讨论的潜在问题。

图 9 – 视频 PID 的 PTS/PCR 时间戳变化

6. 偏移/PCR 动态图显示了包含 PCR 时间戳的 TS 数据包位置之间的增量,并指示 PCR 值在流中分布的均匀程度(图 10)。绘图通常是一个常数。实际上,围绕某个平均值的向上和向下波动是可能的。但是,该图不应显示明显的向上或向下倾斜(趋势)。

图 10 – 流中 PCR 时间戳的变化

7. PCR 准确度直观地显示了所选程序的 PCR 值与预期值的偏差(图 11)。允许偏差为±500 ns,否则检测到第二优先级PCR精度误差。 PCR定位精度决定了整个节目的码率,因此DVB/ATSC调制器对此误差极其敏感。

图 11 – PCR 准确度图

在本指南中,我们探讨了 TS 生成、PTS、DTS、PCR 时间戳的使用及其验证的主要方面。此信息将帮助您设置、维护 IPTV、DVB/ATSC和 OTT 数字电视网络并进行故障排除。


要分析捕获文件中的时间戳,您可以使用 Elecard StreamEye Studio 中包含的流分析器工具。

StreamEye Studio Demo

 


作者

Alexander Kruglov

Alexander Kruglov 是 Elecard 的首席工程师,自 2018 年以来一直从事视频分析工作。 Alexander 负责为 Elecard 的主要客户(例如 Netflix、Cisco、Walt Disney Studios 等)提供支持。