我打算使用ffmpeg确保上传到我网站的所有视频文件都编码为mp4 h264。
不是自动处理每个文件,而是希望通过仅处理那些不是mp4 h264的文件来最小化处理开销。有没有一种简单的方法可以使用ffmpeg或其他命令行实用程序来执行此操作?
答案 0 :(得分:26)
使用ffprobe
。
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 input.mp4
h264
-v error
除了致命错误外,不提供额外信息。
-select_streams v:0
仅选择第一个视频流。否则,将显示文件中所有其他流的codec_name
,例如音频。
-show_entries stream=codec_name
仅输出codec_name
而非所有流信息。
-of default=nokey=1:noprint_wrappers=1
选择默认输出格式样式并省略键和包装器信息。否则,如果没有这些选项,它将输出:
[STREAM]
codec_name=h264
[/STREAM]
答案 1 :(得分:21)
如果您将输入文件传递给ffmpeg而没有其他参数,它将为您提供有关视频源的信息:
ffmpeg -i myfile.avi
另一种方法是mplayer的-identify
选项,它可能稍微容易解析。有一个包装脚本midentify
,它可以为您提供更好的输出。见this example.
答案 2 :(得分:5)
另一种方法是使用ffmpeg附带的ffprobe
。以下将提供我可以从ffmpeg工具中找到的最简洁的输出:
ffprobe -hide_banner -stats -i myfile.avi