检查视频文件的完整性

时间:2019-02-11 21:03:23

标签: bash unix ffmpeg

我有一个视频文件库。他们四处走动,拉开拉链,解开拉链。

碰巧,某些文件仅被部分转移/提取。通常仅在实际观看该视频时才会出现此问题(即,视频过早停止,这确实很烦人)。

有没有一种方法可以批量验证视频库的完整性?

this问题的启发,我提出了以下建议:

find . -regex ".*\.\(avi\|mkv\)" -exec ffmpeg -v error -i {} -f null - \;

这里的问题是, ffmpeg在打印错误消息时不包含文件名,这意味着我不知道批处理中的哪个文件是错误的。

长话短说:

是否可以在ffmpeg错误消息中包含文件名?

1 个答案:

答案 0 :(得分:2)

仅捕获ffmpeg的输出,如果不为空,则使用适当的标题将其打印输出:

find . -regex ".*\.\(avi\|mkv\)" | while read f; do
  ffmpeg_out=$(ffmpeg -hide_banner -nostdin -v error -i "$f" -f null - 2>&1)
  [[ $ffmpeg_out ]] && echo -e "==> ERROR in $f\n${ffmpeg_out}"
done

我添加了两个ffmpeg选项以确保正确操作:

  • -hide_banner关闭正常的FFmpeg前同步码,这只是不必要的噪音
  • -nostdin告诉FFmpeg忽略任何(偶然的)键盘交互