16

同步一直让我着迷,或者更准确地说:为什么 .ts 可以被媒体播放器同步观看,而重新组合的多路音频+视频不同步。

所以我试图理解这一点,以及可以做些什么来防止它。

我已阅读以下内容: https : //trac.handbrake.fr/wiki/LibHandBrakeSync 和 sync.c 的来源(也可在 wiki 上找到)

BitStreamTools 也写了一篇关于该主题的 Theory 101(但我无法链接,因为我是新用户,抱歉)

虽然我认为我对 PCR/PTS 的理解(在概念上)是正确的,但我很难遵循 handbrake 出色的 A/V 同步论文。

我的问题是:是否有某种直观的(可以是简短的、简短的或更长的)对 a/v 同步的解释?虽然我知道如果音频或视频 pts 损坏(不连续性?),可以从 PCR 重新计算 PTS,但手刹似乎并不依赖于此,而是依赖于它的内部 PTS。0, += 1/fps (~=5), 10, 15, ....

是否可以通过修复所有音频和视频 PTS 值来重新计算 pts 偏移量并更正 .ts (二进制)(并以相同的偏移量倾斜所有 DTS,因此播放器不会“用完帧”,所以说话),因此有一个可以解复用的.ts,然后隔离的轨道同步(如果放回一起)?

编辑:或者无法通过使用 PCR 重新计算给定 .ts 中的所有 PTS 值来修复?虽然我了解某些帧/音频可能在广播中损坏,因此无法正确呈现,但我将保留此处理(例如,如果视频损坏并具有相应的音频部分,则删除视频,如果音频包损坏等)到以后,为了讨论,我假设所有帧都完好无损。(但是 PTS 值总是正确的,或者什么?)

附录:我对手刹 A/V 论文的看法是:在“预期”为 100 时,偏移量计算为视频 pts (100) - 音频 pts (0) - 内部 PTS,以使音频达到相同的演示效果时间,因此给出 99 的 pts 偏移量。在 105 处,偏移量将是 105-5 = 100,而不是 99,但我们继续使用 99 作为偏移量,因为不需要重新计算 (100-99 = 1. 1/fps < 100 毫秒)。在 150 处,随着视频 pts 的减少而不是增加,再次计算 pts 偏移量...

我几乎可以肯定我对此完全错了,但是有人可以指出我正确的方向吗?

  • 乔什
4

1 回答 1

23

音视频同步的概念要深得多。我推荐的第一读是以下论文。

http://downloads.bbc.co.uk/rd/pubs/reports/1996-02.pdf

我不会在这里重复所有内容 - 但本质上,每个编码器都会记录时间戳并将其标记在各自的音频和视频上。稍后,当解码器播放它时,它会做两件事 - 第一,确保解码器自己的时钟被编码器的时钟“奴役”,第二,它确保每张图片都显示在屏幕上,并且音频帧在相应的时间准确地呈现给扬声器时间发生。这是音频与视频保持同步的唯一也是最好的方式。这些时间戳称为 PTS/DTS 值,其分辨率为 90 kHz 时钟。

了解随着时间的推移时钟会出现偏差,但由于只引用了准确的时间,因此解码器播放完全按照相同的时间顺序。

现在主要的问题仍然是解码器的时钟需要保持在编码器时钟的控制/同步中。在 MPEG 中做的第一件事是在 27 MHz 处使用更高的精度(高 300 倍)。此外,这需要在中间的任何传输路径期间保持一致。(这称为时钟恢复过程)。

下面是另一篇很好的论文,解释了时钟恢复/同步过程是如何工作的。

https://www.soe.ucsc.edu/sites/default/files/technical-reports/UCSC-CRL-98-04.pdf
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1 .1.86.1016&rep=rep1&type=pdf

这篇最后的论文很好地把每件事都放在一起。
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.50.975&rep=rep1&type=pdf

请记住 - 基于 PCR 和 PTS/DTS 的音频视频同步使数字电视广播非常严格,与互联网流媒体中使用的任何其他流媒体方法大不相同。这对于使其 24x7 流式传输发挥作用至关重要。

于 2011-11-27T13:58:12.620 回答