我想实现 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 碱基移位点需要进行更多计算。
关于video - 基于 PCR 的 MpegTSFile 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443615/