音频/视频同步,TS MPEG2; H264/AVC,了解手刹中的PTS

Jos*_*osh 13 video synchronization dts pts

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

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

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

BitStreamTools也写了关于这个主题的理论101(但我无法链接,因为我是新用户,抱歉)

虽然我认为我对PCR/PTS的理解是(概念上)正确的,但我很难跟上手刹的优秀A/V同步纸.

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

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

编辑:或者不可能通过使用PCR来重新计算给定.ts中的所有PTS值?虽然我知道有些帧/音频可能在广播中被损坏而无法正确显示,但我会留下处理(如删除视频,如果它被损坏并有相应的音频部分,插入x ms静音,如果音频包被损坏等等以后,为了讨论起见,我假设所有帧都完好无损.(但那么PTS值总是正确的,或者是什么?)

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

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

  • 玩笑

Dip*_*hta 20

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

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&代表= REP1&类型= PDF

最后的论文将所有事情放在一起很好.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.50.975&rep=rep1&type=pdf

请记住 - 基于PCR和PTS/DTS的音频视频同步使得数字电视广播非常严格,并且与互联网流媒体中使用的任何其他流媒体方法有很大不同.这对于使24x7流媒体正常运行至关重要.


Jos*_*osh 11

我找到了一个非常好的教程,名为"如何编写少于1000行的视频播放器".

这个链接很好地解释了这些术语.

  • 该教程非常好.我还没有找到任何其他的东西,就像它与所有细节一样. (3认同)