前段时间我下载了一些 flv 视频,当观看它们时,它们停在了一点。如果我跳过那个点,它们会继续播放直到另一个点,然后我可以再次跳过(并且循环一直持续到视频结束)
我已经试过了
avconv -i input.flv -acodec copy -vcodec copy -g 1 output.flv
根据我阅读了很多关于这个问题的无用帖子的理解,我的元数据中没有任何关键帧,然后在出现坏帧时停止。
我尝试将 -g 设置得更高,但 output.flv 在原始文件第一次停止的同一点停止。有没有什么工具可以解决这个问题。
我不记得原始链接的位置,重新下载不是一个选项,正如你所看到的,我的重新编码尝试失败了。
我使用的是 Linux Ubuntu,因此无法使用可用的 Windows 工具。
编辑
经过一番努力,我仍然无法修复文件。
我错误地认为元数据是问题所在。在尝试了一系列工具后,我发现它们中的大多数都以文件结尾(在文件中间)停止。
元数据就是它应该的样子。(我成功提取了它)。似乎流已损坏。我尝试重新混合,重新编码注入元数据,他们都没有工作,他们产生的文件仍然停留在同一位置,或者只是流到坏点。
我的问题与此处列出的完全相同:链接
任何帮助将不胜感激。即使我必须用十六进制编辑器破解一些文件,我也会采取任何解决方案。(我尝试删除我认为不好的部分,但这导致它根本无法播放)
我现在有一台 Windows 机器可供我使用,因此运行 Windows 实用程序不再是问题。
我修好了它。
这不是我希望的解决方案,但我设法使用 avconv 将文件分割成不同的位
avconv -ss "$TIME" -i "$IN" -vcodec copy -acodec copy "$OUT"."$PART".mkv
Run Code Online (Sandbox Code Playgroud)
将 ss 放在输入文件之前会导致它使用关键帧跳转到正确的位置,然后不会遇到损坏的位并崩溃。在每个损坏的位之后,我使用新的 $TIME 重复之前的步骤。
最后,我将所有位与 avconv concat 选项添加在一起,现在它可以工作了。当到达之前的损坏位时,视频会向前跳一点,但这没关系。