gpt4 book ai didi

ffmpeg - 如何使用 ffmpeg -vcodec copy 重新导出损坏的 AVI 中的关键帧

转载 作者:行者123 更新时间:2023-12-04 23:18:57 24 4
gpt4 key购买 nike

我发现一些损坏的 AVI 文件,当我尝试播放它们时,VLC 提示索引损坏。我可以直接播放而无需滚动时间线或等待...等待...建立索引(但未保存)并正常播放。其他一些玩家可以毫无怨言地玩它们,而另一些则拒绝玩。
我可以在 中无缝解决问题虚拟配音通过在 Open with 中使用“扩展选项”打开 .avi “重新导出关键帧标志”然后保存一个新的 .AVI 文件
视频和音频的直接流复制。生成的文件可以完美播放。
我也可以用 解决问题ffmpeg 但并非没有问题。

ffmpeg -i INFILE -vcodec copy -acodec copy OUTFILE
重要 :只有流副本和相同的容器是有意义的。
生成的文件在 VLC 中播放没有任何提示或下一个问题,但在许多其他播放器中,当在时间轴上跳转时,视频会在跳转目的地立即失真,并保持严重失真,直到流中的下一个 I 帧。使用 VirtualDub 处理时,所有这些都不会发生。
ffmpeg 更快,但最重要的是它是可编写脚本的,并且可以使许多文件自动化。使用 VirtualDub,必须手动处理每个文件并等待很长时间,以便打开的进程首先重新导出关键帧标志。不介意 ffmpeg 速度是否因为它可以提供的自动化而丢失。
到目前为止,我只发现了一个非常古老的未答复邮件列表帖子 here
如果没有上述问题,ffmpeg 可以修复此类文件吗?如果是,如何?
谢谢你。

最佳答案

AVI 文件索引包含所有帧(关键帧或非关键帧),但它们有一个 flags字段(FFmpeg 填写)应该帮助玩家只寻找关键帧。我无权访问您的确切文件(ffprobe 信息会有所帮助),但我们可以假设 flags字段写入不正确,例如它可能为每一帧设置或根本没有设置。
如果容器中不存在,VLC 可能会解析编解码器数据包以导出关键帧标志,但其他播放器可能不会。我认为您正在寻找的是在流复制时派生关键帧标志。确切的命令行取决于编解码器。例如,对于 H264,您希望作为中间文件格式转储到附件 B,然后重新读取它,以便调用 H264 解析器,它设置关键帧标志,然后将其重新复用到 AVI - 但 H264在 AVI 中很少见,所以这可能不是这里发生的事情。
因此,对于解决方案,我需要 ffprobe $file 的输出所以我知道 AVI 文件包含什么编解码器。

关于ffmpeg - 如何使用 ffmpeg -vcodec copy 重新导出损坏的 AVI 中的关键帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70913135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com