我想为 MpegTs 文件播放实现查找功能。任何人都可以建议我如何将 PCR 转换为时间(以 mescs 为单位)。我知道 PCR 用于搜索(我在 VLC 中看到过),但想知道如何做到这一点。
亲切的问候,文
PCR 是一个时钟,代表编码器端的 27 Mhz 时钟。因此 PCR 时钟的每个刻度代表 1/27 微秒。
第一步是能够解析 PCR 数据包。PCR 滴答由特定的 PID 维护(主要是视频,但可以是音频或替代数据包)。当数据包中存在 PCR 时,它属于 Adaptation 字段,类型为 2 或 3。您可以参考this或wiki了解如何解析 PCR。
一旦您获得数据包的 PCR 值 - (使用 64 位整数),您就有该数据包的时间戳 P0。现在你可以精确地说 10 秒,当你得到下一个 PCR 数据包时,带有时间戳,P1 在哪里
P1 = P0 + 10 * 27 * 10^6
因此,当您看到另一个包含时间戳 P1 或更多的此类数据包时,您可以确定经过了 10 秒。
请注意,在某些情况下,PCR 可能会发现不连续性,因此需要在 PCR 碱基偏移点进行更多计算。