我有一个使用 FFMPEG 转换许多文件的脚本。如果我停止它,它当前输出的文件将保持不完整状态。
有没有办法让 FFMPEG 写入临时文件(例如 FILENAME_incomplete),以便我可以轻松识别中止的转换?
答案1
如果您手动中止它,则不会实现此功能,因为 ffmpeg 本身没有进度概念。它不知道输出将持续 200 秒,因此如果在 100 秒时停止,则处理不完整。
如果 ffmpeg 由于错误而停止,其退出代码将 > 0。因此,您可以捕获该错误并删除相应的输出文件。
答案2
读取错误代码是一种方法,但它并不安全 - 比如说如果终端被杀死或者发生其他情况。
您可以像这样在脚本中Filename.incomplete.mpeg
的行后命名输出文件,检查退出代码(对于脚本)是否为 0,在这种情况下假设正常完成,您可以将文件重命名为。ffmpeg
$?
bash
ffmpeg
Filename.mpeg
我还注意到未损坏的输出有损坏的时间线。可能有方法可以检查输出文件是否完整(使用ffprobe
可能)。