This is my study note of ffmpeg.

这文记录部分ffmpeg命令。

1.容器

视频本身其实就是一个容器,包括了音频、视频,也有可能包括字幕等内容,我们可以通过以下命令查看支持的容器类型:

1
ffmpeg -formats

2.编码格式

不同的编码格式会有不同的压缩率,会导致文件大小和清晰度的差异。查看编码格式如下:

1
ffmpeg -codecs

3.编码器

编码器是实现某种编码格式的库文件,以下命令可以查看已安装的编码器:

1
ffmpeg -encoders

4.ffmpeg的使用格式

1
ffmpeg [1] [2] -i [3] [4] [5]

上述命令的含义如下:

1
2
3
4
5
1.全局参数
2.输入文件参数
3.输入文件
4.输出文件参数
5.输出文件

5.常用的命令行参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-c : 指定编码器
-c copy : 直接复制,不经过重新编码
-c:v : 指定视频编码器
-C:a : 指定音频编码器
-i : 指定输入文件
-an : 去除音频流
-vn : 去除视频流
-preset : 指定输出的视频质量,会影响文件的生成速度,ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
-b:v——设置影像流量,默认为200Kbit/秒。
-r——设置帧率值,默认为25。
-s——设置画面的宽与高。
-aspect——设置画面的比例。
-vn——不处理影像,于仅针对声音做处理时使用。
-vcodec( -c:v )——设置影像影像编解码器,未设置时则使用与输入文件相同之编解码器。
声音参数
-b:a——设置每Channel(最近的SVN版为所有Channel的总合)的流量。
-ar——设置采样率。
-ac——设置声音的Channel数。
-acodec ( -c:a ) ——设置声音编解码器,未设置时与影像相同,使用与输入文件相同之编解码器。
-an——不处理声音,于仅针对影像做处理时使用。
-vol——设置音量大小,256为标准音量。(要设置成两倍音量时则输入512,依此类推。)

6.常见用法

查看文件信息

1
ffmpeg -i input.mp4

也可加入参数-hide_banner,只显示元信息。

1
ffmpeg -i input.mp4 -hide_banner

转换编码格式

1
ffmpeg -i input.mp4 -c:v libx264 output.mp4

也可转成h265格式,只需要将libx264进行更换。

转换容器格式

1
ffmpeg -i input.mp4 -c copy output.webm

上述操作只是更改了容器,内部编码的格式还是不变,所以使用-c copy指定直接拷贝。

调整码率

1
2
3
4
ffmpeg \
-i input.mp4\
-minrate 964K -maxrate 3856K -bufsize 2000K\
output.mp4

上述操作指定最小码率为964K,最大码率为3856K,缓冲区大小为2000K。

改变分辨率

1
2
3
4
ffmpeg\
-i input.mp4\
-vf scale:480:-1\
output.mp4

上述命令将1080p转换为480p。

提取音频

1
2
3
4
ffmpeg\
-i input.mp4\
-vn -c:a copy\
output.mp4

上述命令中,-vn表示去除视频,-c:a表示不改变音频编码格式直接复制。

添加音轨

1
ffmpeg -i input.mp4 -i input1.aac -o output.mp4

将外部音频加入视频中,做为背景音乐。

截图

1
2
3
4
5
ffmpeg \
-y \
-i input.mp4 \
-ss 00:01:24 -t 00:00:01 \
output_%3d.jpg

每秒截图一帧图像并保存

裁剪

1
2
ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]
ffmpeg -ss [start] -i [input] -to [end] -c copy [output]

为音频添加封面

1
2
3
4
5
$ ffmpeg \
-loop 1 \
-i cover.jpg -i input.mp3 \
-c:v libx264 -c:a aac -b:a 192k -shortest \
output.mp4

文件提取

1
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -b:a 192k output.mp3

-i input.mp4:指定输入文件 -vn:表示不输出视频流 -ar 44100:采样率为 44.1kHz -ac 2:立体声 -b:a 192k:码率为 192kbps output.mp3:输出文件名称