如果完整性检查遇到错误,我可以让 ffmpeg 停止吗?

如果完整性检查遇到错误,我可以让 ffmpeg 停止吗?

如果遇到错误,有没有办法停止 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

相关内容