【发布时间】:2025-12-24 16:00:17
【问题描述】:
所以我一直试图围绕 mpeg-ts 计时和 PCR(程序时钟参考)。我知道这是用于解码器的视频/音频同步。
到目前为止,我的基本理解是一切都由 27 Mhz 时钟(振荡器)驱动。该时钟以 27 Mhz 的速率循环,从 0 到 299 计数并不断重复。每次发生从 299 到 0 的“翻转”时,33 位 PCR 计数器就会增加 1。实际上,33 位 PCR 计数器因此本身以 90 kHz 的速率运行。所以另一种说法是 27 Mhz 时钟除以 300,得到一个 90 kHz 时钟。
然后将这个 90 kHz 时钟用于 33 位 PCR 计数器。
我了解历史上选择 90 kHz 是因为 mpeg-1 使用 90 kHz 时基。 [见源here]
无论如何...我已经读到 PCR 33 位计数值的范围从 0x000000000 一直到 0x1FFFFFFFF。根据this,它显示了这些值在我们人类理解的时间方面的含义(小时、分钟、秒等): 00:00:00.000 (0x000000000) 至 26:30:43.717 (0x1FFFFFFFF)
所以最终,我的问题是关于如何将这些十六进制代码转换为这些时间戳。如果有人给我一个十六进制代码,现在我需要重现时间戳,那么方程式会是什么?
我会很感激任何帮助:)
===========
我自己更接近答案。查看从 0x000000000 到 0x1FFFFFFFF 的范围,这基本上是十进制的 0 到 8589934591。由于 PCR 时钟是 90Khz,要获得从 0 到 8589934591 所需的秒数,我们可以使用 8589934591/90000 得到 95443.71768 秒。
【问题讨论】:
-
这不是一个“十六进制代码”,它只是一个数字。您选择在第 16 节中表示它。您也可以将其键入为小数。
标签: mpeg2-ts