代码之家  ›  专栏  ›  技术社区  ›  kerner1000

检查视频文件的完整性

  •  0
  • kerner1000  · 技术社区  · 7 年前

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

    事实上,有些文件只能部分传输/提取。这个问题通常只有在实际观看视频时才会出现(即,视频过早停止,这真的很烦人)。

    是否有方法批量验证视频库的完整性?

    我想出了以下几点,灵感来自 this 问题:

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

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

    长话短说:

    是否有方法在ffmpeg错误消息中包含文件名?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Adrian    7 年前

    只需捕获 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忽略任何(意外)键盘交互