Bil*_*ble 21 ffmpeg video-processing video-encoding
我打算使用ffmpeg来确保上传到我网站的所有视频文件都编码为mp4 h264.
而不是自动处理每个文件,我想通过仅处理那些不是mp4 h264的文件来最小化处理开销.有没有一种简单的方法可以使用ffmpeg或其他命令行实用程序执行此操作?
llo*_*gan 29
使用ffprobe
.
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 input.mp4
Run Code Online (Sandbox Code Playgroud)
h264
Run Code Online (Sandbox Code Playgroud)
-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]
Run Code Online (Sandbox Code Playgroud)pix*_*tik 23
如果您将输入文件传递给ffmpeg,而没有其他参数,它将为您提供有关视频源的信息:
ffmpeg -i myfile.avi
Run Code Online (Sandbox Code Playgroud)
另一种方法是-identify
mplayer 的选项,它可能稍微容易解析.有一个包装器脚本midentify
,可以为您提供更好的输出.看这个例子.
另一种方法是使用ffprobe
ffmpeg附带的工具。以下将提供我可以从ffmpeg工具中找到的最简洁的输出:
ffprobe -hide_banner -stats -i myfile.avi
Run Code Online (Sandbox Code Playgroud)