因此,我一直在尝试围绕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使用90kHz时基。 [请参见源here]
无论如何...我已经读到PCR 33位计数值的范围从0x000000000一直到0x1FFFFFFFF。根据{{3}},它显示了这些值在我们人类所理解的时间(小时,分钟,秒等)中的含义: 00:00:00.000(0x000000000) 至 26:30:43.717(0x1FFFFFFFF)
因此,最终,我的问题与如何将这些十六进制代码转换为这些时间戳记有关。如果有人给我一个十六进制代码,现在我需要重现时间戳,方程将是什么?
我将不胜感激:)
==========
我自己更接近答案。查看从0x000000000到0x1FFFFFFFF的范围,基本上是0到8589934591(二进制)。由于PCR时钟为90Khz,要获得从0到8589934591所需的秒数,我们可以执行8589934591/90000,这将使我们获得95443.71768秒。
答案 0 :(得分:0)
除非您创建了严格的比特率编码器以通过卫星或地面广播进行广播,否则PCR无关紧要。
场景: 您正在向没有回波通道的无线接收器进行广播,该接收器的公鸡正在运行,其认为是每秒90000个滴答声。您的编码器还以每秒90000张票的速度运行。您如何确定接收方和广播方的秒数完全相同?也许一侧正在运行得有些快或慢。为了保持时钟同步,编码器偶尔会发送当前时间,该值是PCR。例如,如果您以每秒15,040,000位的速度进行广播,则接收器每0.0000125秒将收到一个188字节的数据包。编码器将不时(100 ms)插入其当前时间。接收器可以将此时间与其内部时钟进行比较,并确定其运行速度比广播编码器快还是慢。为了保持严格的每秒235,000个数据包(15,040,000 /(188 * 8)= 235,000),编码器将插入空数据包。在Internet上,空数据包占用带宽,没有任何价值,因此将其消除。因此,PCR不再具有任何价值,因为它的时间不再与接收速率有关。
回答您的问题。将27hz值设置为零,对于90khz值,使用最近的dts减去少量静态值(如100ms)。