【发布时间】:2011-01-18 20:12:28
【问题描述】:
同步一直让我着迷,或者更准确地说:为什么一个 .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 值(并以相同的偏移量倾斜所有 DTS 来重新计算 pts 偏移量并更正 .ts(二进制)),这样播放器就不会“用完帧” ,可以这么说),因此有一个可以解复用的 .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
我几乎可以肯定我完全错了,但是请有人指出我正确的方向吗?
- 乔什
【问题讨论】:
标签: video synchronization dts pts