我发现一些损坏的 AVI 文件,当我尝试播放它们时,VLC 抱怨索引损坏。我可以直接播放而无需滚动时间线或等待...等待...建立索引(但未保存)并正常播放。其他一些玩家可以毫无怨言地玩它们,而另一些则拒绝玩。
我可以在VirtualDub中无缝解决这个问题,方法是在 Open with “re-derive keyframe flags”中打开带有 “extended options” 的 .avi,然后保存一个带有直接流复制视频和音频的新 .AVI 文件。生成的文件可以完美播放。
我也可以用ffmpeg解决问题,但并非没有问题。
ffmpeg -i INFILE -vcodec copy -acodec copy OUTFILE
重要:只有流副本和相同的容器是有意义的。
生成的文件在 VLC 中播放没有任何抱怨或下一个问题,但在许多其他播放器中,当在时间轴上跳转时,视频会在跳转目的地立即失真,并保持严重失真,直到流中的下一个 I 帧。使用 VirtualDub 处理时,所有这些都不会发生。
ffmpeg 更快,但最重要的是它是可编写脚本的,并且可以使许多文件自动化。使用 VirtualDub,必须手动处理每个文件并等待很长时间,以便打开的进程首先重新导出关键帧标志。不介意 ffmpeg 速度是否因为它可以提供的自动化而丢失。
到目前为止,我只在这里找到了一个非常古老的未答复邮件列表帖子
如果没有上述问题,ffmpeg 可以修复此类文件吗?如果是,如何?
谢谢你。