FFmpeg命令行使用

如题所述

第1个回答  2022-07-14
FFmpeg的命令非常多,经常看着会云里雾里的,个人认为没必要去硬背,只要打开Terminal,输入 ffmpeg -help 命令,这条命令会告述你FFmpeg支持的大部分常用命令以及使用方式。查看这些输出的信息,基本上就会使用很多常用的命令了。
你会发现执行 ffmpeg -help 会输出一大坨,那都是些啥玩意呢,不着急,咱们一步一步来慢慢品尝。

第一个就是输出我们安装的FFmpeg的版本号

--prefix 是指FFmpeg的安装路径
--enable 是你安装的FFmpeg支持的三方库 这里可以看出支持 libx264 、 libx265 的编码,以及支持 videotoolbox , videotoolbox 是Mac、iOS上的一个系统自带硬编解码库,FFmpeg也给予了支持,非常的给力。

这是输出FFmpeg里面包含的库,这些都是独立的,是可以单独拎出来使用的,你如果只要编解码,那你就只要在项目中导入 libavcodec 即可

这是告诉我们命令行使用格式
[options] 这个是全局参数
[infile options] 这个是输入文件的参数
infile 这个是输入文件的路径
[outfile options] 这个是输出文件的参数
outfile 这个是输出文件的路径
细心的你肯定发现 infile 、 outfile 的后面有个 ... ,这是在告诉我们输入、输出文件可以分别有一个或者多个。
比如执行 ffmpeg -i test.h264 -i test.aac -c copy test.mp4
这条命令会把一个h264文件和一个aac的音频文件合并并输出一个mp4格式的文件,这其中就有两个输入文件、一个输出文件。

这些是详细的帮助信息
-h long 打印更多的选项参数。
-h full 打印所有的选项参数,包括所有针对于 format 和 codec 的选项,信息特别的长。
man ffmpeg : 查看FFmpeg的帮助手册。
-h type=name 打印指定名称的 decoder/encoder/demuxer/muxer/filter 的所有选项信息。
比如你要查询 scale 滤镜的使用方式,我们就执行 ffmpeg -h filter=scale
输出如下:

这就告诉我们 scale 滤镜有 w 、 h 等参数,我们就这样使用 scale 滤镜,
ffmpeg -i input.mp4 -filter_complex "scale=w=iw/2h=ih/2" output.mp4
其中 iw 代表输入视频的宽, ih 代表输入视频的高,这条命令就把输入的视频缩小一倍,这里你可能会有疑问,我都不记得那些滤镜的名字,就无法使用这个去查了,哈哈不要急,还记得上面的帮助命令吗, ffmpeg -filters 可以输出所有的滤镜名字了,如果你觉的输出太多,你不好找的话,你只要记得这个滤镜大概是叫什么名字、包含什么字母,你就借助 grep 指令去输出里面搜索关键字,这样就只会输出你关心的滤镜名了,如 ffmpeg -filters | grep over

以上是帮助命令,如果你忘记了某个编译器、像素格式或者滤镜的名字,你就可以用这些命令去查看。

以上就是全局参数

以上是音视频的公共参数

以上是视频处理相关参数

以上是音频处理相关

以上字幕处理相关参数

以上就是 ffmpeg -help 的输出说明了,下面咱们来看看常用的命令。

-r 10 表示1秒视频会生成10张图片

-f avfoundation 指定采用avfoundation采集数据使用
-i 1:0 表示 指定视频设备索引为1,指定录音设备索引为0。
使用 ffmpeg -list_devices 1 -f avfoundation -i '' 可以打印出设备列表,如下:

因此上述命令中的 -i 1:0 表示采用【Capture screen 0】【Built-in Microphone】即采用屏幕和系统自带的麦克风进行采集。