如果遇到错误,有没有办法停止 ffmpeg 的处理?我正在使用 ffmpeg 检查视频完整性,方法是:
ffmpeg -v error -i file.avi -f null - 2>error.log
不过,我想对其进行扩展,以便一旦发现错误就立即停止该过程。
答案1
我自己也曾考虑过这个问题,但ffmpeg
并没有提供简单的方法来实现。根据我收到的反馈FFmpeg 邮件列表,您可以使用全局选项
-err_detect explode
不过,此选项似乎并非在所有情况下都有效。请ffmpeg -h full
参阅选项列表:
-err_detect <flags> .D.... set error detection flags
值如下:
可能的值:
crccheck
:验证嵌入的 CRC
bitstream
:检测比特流规范偏差
buffer
:检测不正确的比特流长度
explode
:检测到轻微错误时中止解码
ignore_err
:忽略解码错误,继续解码。如果您想要分析视频内容,因此无论如何都希望解码所有内容,则此选项非常有用。如果出现错误,此选项将不会产生令人赏心悦目的视频。
careful
:将违反规范且尚未在实际中发现的内容视为错误
compliant
:将所有不符合规范的情况视为错误
aggressive
:考虑一个理智的编码器不应该做的事情作为错误
答案2
在一个选项中:
-xerror
命令行选项被记录为完全按照您想要的方式执行。
添加选项后,ffmpeg 将在流错误时退出(也将退出值设置为 1):
ffmpeg -h full | grep xerror .... -xerror error exit on error