【问题标题】:Check video files for integrity检查视频文件的完整性
【发布时间】:2019-07-05 10:51:14
【问题描述】:

我有一个视频文件库。它们会四处移动、拉上拉链、解开拉链等等。

发生了一些事情,例如,某些文件仅被部分传输/提取。这个问题通常只在实际观看该视频时出现(即视频过早停止,这真的很烦人)。

有没有办法批量验证视频库的完整性?

this问题的启发,我想出了以下内容:

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

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

长话短说:

有没有办法在 ffmpeg 错误消息中包含文件名?

【问题讨论】:

  • 您可以将校验和存储为文件名的一部分。如果下次检查不匹配,则内容已更改。
  • 在现有的之前添加另一个-exec-exec echo -n "{}: " \; -exec ffmpeg.......(但它也会正确打印电影的名称)

标签: bash unix ffmpeg


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多