我有一个视频文件库。他们四处走动,拉开拉链,解开拉链。
碰巧,某些文件仅被部分转移/提取。通常仅在实际观看该视频时才会出现此问题(即,视频过早停止,这确实很烦人)。
有没有一种方法可以批量验证视频库的完整性?
受this问题的启发,我提出了以下建议:
find . -regex ".*\.\(avi\|mkv\)" -exec ffmpeg -v error -i {} -f null - \;
这里的问题是, ffmpeg在打印错误消息时不包含文件名,这意味着我不知道批处理中的哪个文件是错误的。
长话短说:
是否可以在ffmpeg错误消息中包含文件名?
答案 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忽略任何(偶然的)键盘交互