我有一个视频文件库。它们会被移动,拉链,解开拉链什么的。
碰巧的是,有些文件只得到了部分传输/提取。这个问题通常只有在实际观看视频时才会出现(例如,视频过早停止,这非常烦人)。
是否有一种方法可以批量验证视频库的完整性?
受this问题的启发,我提出了以下问题:
find . -regex ".*\.\(avi\|mkv\)" -exec ffmpeg -v error -i {} -f null - \;
这里的问题是,ffmpeg在打印错误消息时不包括文件名,这意味着我不知道批处理中的哪个文件是错误的。
长话短说:
有方法在ffmpeg错误消息中包含文件名吗?
发布于 2019-02-12 01:42:17
只需捕获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忽略任何(偶然的)键盘交互https://stackoverflow.com/questions/54639111
复制相似问题