我很喜欢使用ffmpeg -f null
以上的想法,但实际上我想自动化使用该输出的过程。特别是,我在收集音乐视频的过程中,常见的情况是我有一些分辨率相同的片段,我想对这些文件的验证日志进行差异化处理,以去除那些最坏的文件。
不幸的是,到目前为止,ffmpeg还没有办法禁用它的交互模式,在这种情况下,它会输出噪音。最后我黑了一个简单的包装脚本来做过滤。
#!/usr/bin/env python
import sys
import os
import re
t = os.popen('ffmpeg -v 5 -i "%s" -f null - 2>&1' % sys.argv[1]).read()
t = re.sub(r"frame=.+?\r", "", t)
t = re.sub(r"\[(.+?) @ 0x.+?\]", "[\1]", t)
print t
示例输出:
[mpeg1video]ac-tex damaged at 21 17
[mpeg1video]Warning MVs not available
[mpeg1video]concealing 22 DC, 22 AC, 22 MV errors
[mpeg1video]Warning MVs not available
[mpeg1video]concealing 22 DC, 22 AC, 22 MV errors
[mpeg1video]ac-tex damaged at 13 9