我有数千个视频文件需要检查/验证是否有错误或警告。一家公司刚刚将它们数字化,覆盖在旧磁带上(VHS、Umatic……)所有这些视频都是 mp4 格式,我想用软件自动检查它们。经过一番搜索,我找到了这个网站(http://videofilechecker.com/),但是该软件没有试用版,所以我无法用我的视频文件测试它。然后我看到该软件正在使用 ffmpeg 来验证所有这些视频。在第二次搜索中,我在超级用户中找到了这个问题。(如何检查视频文件(avi、mpeg、mp4……)的完整性?)。
这个问题的答案是:
ffmpeg.exe -v 5 -i file.avi -f null - >error.log
我检查了 error.log,它完全是空的(可能视频中没有错误)
但是我研究了 ffmpeg 的文档并发现了一些其他的东西,例如:
ffmpeg.exe -v error -i file.mp4 -f null - >error.log
但后来我收到一个错误:
Unknown input format: null
Failed to set value 'null' for option 'f': Error number -22 occurred
如果我尝试,-v 5
没有任何错误,但在文档它写成-v error
由于我对视频验证的了解有限,我不太确定应该使用 ffmpeg 的哪些选项来验证所有这些文件。此外,我的下一个问题是在 Windows 中编写一个批处理脚本,它将逐个检查所有文件,如果有错误,它会将其写入带有文件名的日志文件中。有人有任何软件想法或脚本来验证这些视频吗?
答案1
这就是我正在使用的:
./ffmpeg.exe -v debug -threads 8 -nostats -i "path/to/file.ts" -f null - >~/error.log 2>&1
或者:
./ffmpeg.exe -v debug -threads 8 -nostats -i "path/to/file.ts" -f null - 2>~/error.log
第二个仅将 stderr 重定向到文件,而第一个将 stderr 和 stdout 都重定向。
该选项-v debug
将打印所有错误、警告和调试信息,因此在比较两个视频文件时可能会很有用(例如,查看哪个文件的错误较少)。要限制报告的内容,请根据 ffmpeg 文档使用其他级别:
https://www.ffmpeg.org/ffmpeg.html
查找选项:-loglevel [repeat+]loglevel | -v [repeat+]loglevel
。其他级别是quiet
,panic
,fatal
,error
,warning
,info
,verbose
。debug