我在 Ubuntu 11.04 上使用 VLC 1.1.9,在播放视频时不断调整音频延迟以使音频/视频同步(通常约为 -400ms,但偶尔会有所不同,有时为 -250,有时为 0...)
为什么会发生这种情况?我该如何解决?或者至少设置一个默认音频延迟以节省一些精力……
我似乎没有遇到 mplayer 或 Totem 的相同问题,因此我认为这不是系统/声音设置问题,而且我没有注意到文件类型的模式,它发生在 .avi、.mp4 等上。
答案1
VLC 中有 3 个项目会影响如何处理跳帧或音频与视频长度不均匀的问题。在 VLC 的工具菜单中选择首选项。您可能需要切换到全部模式而不是简单模式才能看到所有内容。
在音频中,[ ] 启用时间拉伸模式
我认为这会尝试纠正彼此长度偏移的音频和视频流。它会跳过视频或更改音频的播放速率,以便两个流同时结束。
这可能是好事,也可能很糟糕,这取决于音频是否比视频运行时间长,或者偏移量和其他可能存在的数据。 如果打开它,可能会对一个视频有帮助,如果关闭它,可能会损害另一个视频。 任何程序完全理解并正确编码的视频,无论打开还是关闭都没有关系。
视频中的 2 件事[ ] 丢弃迟到帧 &[X] 跳帧
其中之一就是当播放器/计算机无法跟上播放速度时,视频会丢失一个视频帧。正如我在下面尝试解释的那样,这可能会导致 AV 的初始偏移,或者不取决于许多其他因素。随着帧被跳过,情况可能会变得越来越糟。
通常,您需要设置更好的设置,或使用更好的解码方法或显示方法,以便绝不出现丢帧。禁用任何额外且不必要的视频数据处理,也可以释放显示所需的工作。因此,如果您可以尝试找出您的机器无法跟上的原因,或者将显示渲染方法更改为更简单的方法。
另一个可能是对损坏的帧或数据的处理,当数据损坏时,这会带来一系列可能发生的事情,从而导致 AV 不同步。
更改这 3 项,直到该视频播放正确,并希望您获得的下一个视频是类似的 :-) 没有一种方法可以针对所有视频和所有机器设置这些。我可以保证那里有视频,编码不正确,世界上所有的交换机都无法完全修复它 :-)
我不会使用所有正确的技术,这只是我的理解
在任何播放器上播放视频时,如果视频跳过一个节拍或丢失一帧,而音频继续播放,好像什么都没发生过一样,音频和视频就会不同步。
音频和视频实际上是 2 个不同的数据流,即使在您的许多 AV 播放器情况下它们来自同一个文件。此音频和视频可以在数据流中以不同的时间间隔或帧交错,或者根本不交错,甚至可以是单独的文件。
实际上在文件中可以是这样的,可怜的玩家试图弄清楚如何保持这两者同步:-)
|----音频------------------------------|=======V=I=D=E=O============================|
但更常见的是
|----A-----|=======V=====|----A-----|=======V=====|----A-----|=======V=====|
如果你的数据有紧密的“交错”,那么它可能是这样的
|-A-|=V=|-A-|=V=|-A-|=V=|-A-|=V=|-A-|=V=|-A-|=V=|-A-|=V=|-A-|=V=|-A-|=V=|
如果您要重新编码或编码视频,请尽可能使用可以设置紧密 AV 交错的编码器,这样即使视频跳过节拍或您快进或快退,视频也会保持同步。虚拟配音仍然是免费处理视频的最佳工具之一,您只需“直接”通过视频并重新交错即可。一旦交错,它在播放时大部分时间都会保持这种状态。因此,错误的编码也会(某种程度上)被锁定。
进一步解释,还包括视频是否“始终偏移”,偏移是否随着时间的推移而“移动”得越来越远,或者视频是否“在中间位置跳跃或偏离”,这三个问题可能是完全不同的问题,并且是由完全不同的事情引起的。使用 VirtualDub,您可以在很短的处理时间内修复其中两个问题。
总结一下,大部分问题都是编码不当、编码/解码方式复杂以及数据损坏。如果可能的话,使用较短的交错也很好。
您的理解可能比一些改变事物的开关更有价值。稍微理解一下,就能知道何时、如何以及为什么切换,或者只是自己修复视频,或者自己更好地编码。这不仅限于 VLC,许多其他播放器也有相同的开关,只是名称不同。如果我解释得不好,或者说得太多了,我很抱歉。