ffmpeg语法
2020-04-08 18:20:25
854次阅读
0个评论
ffmpeg的一般语法是
常用的参数有
-i 文件(指定输入文件,可以是音频、视频、字幕、图片等资源,可以多次调用)
-acodec 编码器(指定音频编码器,简写为”-c:a”,常用的有copy|opus|aac|libvorbis|mp3)
-vcodec 编码器(指定视频编码器,简写为”-c:v”,常用的有copy|hevc|h264|vp9)
-scodec 编码器(指定字幕编码器,简写为”-c:s”,常用的有ass|srt)
-c copy(指定音频、视频、字幕编码都为copy)
-c:a copy(指定音频编码为copy)
-c:v copy(指定视频编码为copy)
-c:s ass(指定字幕编码为ass)
-ar 32000(音频的采样率,也可以写成32k)
-an(将音频去除)
-vn(将视频去除)
-vol 256(指定音量是原来的多少,取值范围为0-256,如果是256表示和原来一样)
-r 24(输出视频的帧率为每秒24帧)
-s 1280x720(指定视频尺寸,两个数字之间用小写字母x分割)
-ss 30(指定输出文件相对于输入文件的开始时间,就是起点时间或叫偏移位置,一般以秒为单位,人性化的写法有10.0268|5:00|1:23:45|1:23:45.678)
-t 30(指定输出文件的持续时间,一般以秒为单位,人性化的写法有10.0268|5:00|1:23:45|1:23:45.678)
-vf subtitles=test.srt(指定滤镜)
-map 0:0(分配媒体流,格式是”输入文件编号:这个文件的媒体流编号”,可以多次调用)
-crf 23(恒流量系数,取值范围为0-51,默认值为23,0代表无损,数字越小画质越高)
-preset medium(指定预设,在文件大小一样的情况下越慢的预设画质越好,或者说在画质一样的情况下越慢的预设文件更小)
预设从快到慢排列为ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo
-b:v 1000k(指定平均比特率,单位可以用k|m,作用是可以控制最终的文件大小,一般不能与”-crf”同时使用)
-y(覆盖输出文件)
-n(不覆盖输出文件)
-fs 数字(限制输出文件的大小,单位为字节)
-aspect 16:9(设置视频宽高比,可以写成4:3、16:9、1.3333、1.7777)
常见的用法
1.合并文件
list.txt文件内容为
file 01.mp4
file 02.mp4
需要注意的是被合并的视频必须编码和封装格式保持一致
2.添加字幕
3.字幕转换
4.转换为webm格式
vp9的crf值范围为0-63
要让vp9编码器保持稳定画质的时候必须指定”-b:v 0”
5.预设的使用
6.缩放
scale=960:-1表示在输出时保持原始的宽高比
7.分别在左上、左下、右上、右下角加水印
8.删除水印
格式为
9.视频旋转
数字的含义如下
0->逆时针方向旋转90度并垂直翻转
1->顺时针方向旋转90度
2->逆时针方向旋转90度
3->顺时针方向旋转90度并水平翻转
由于视频需要重新编码,所以不能指定-c:v copy
10.视频裁剪
11.只保留60秒到120秒之间的数据
ffmpeg -i 输入文件 各种参数 输出文件
常用的参数有
-i 文件(指定输入文件,可以是音频、视频、字幕、图片等资源,可以多次调用)
-acodec 编码器(指定音频编码器,简写为”-c:a”,常用的有copy|opus|aac|libvorbis|mp3)
-vcodec 编码器(指定视频编码器,简写为”-c:v”,常用的有copy|hevc|h264|vp9)
-scodec 编码器(指定字幕编码器,简写为”-c:s”,常用的有ass|srt)
-c copy(指定音频、视频、字幕编码都为copy)
-c:a copy(指定音频编码为copy)
-c:v copy(指定视频编码为copy)
-c:s ass(指定字幕编码为ass)
-ar 32000(音频的采样率,也可以写成32k)
-an(将音频去除)
-vn(将视频去除)
-vol 256(指定音量是原来的多少,取值范围为0-256,如果是256表示和原来一样)
-r 24(输出视频的帧率为每秒24帧)
-s 1280x720(指定视频尺寸,两个数字之间用小写字母x分割)
-ss 30(指定输出文件相对于输入文件的开始时间,就是起点时间或叫偏移位置,一般以秒为单位,人性化的写法有10.0268|5:00|1:23:45|1:23:45.678)
-t 30(指定输出文件的持续时间,一般以秒为单位,人性化的写法有10.0268|5:00|1:23:45|1:23:45.678)
-vf subtitles=test.srt(指定滤镜)
-map 0:0(分配媒体流,格式是”输入文件编号:这个文件的媒体流编号”,可以多次调用)
-crf 23(恒流量系数,取值范围为0-51,默认值为23,0代表无损,数字越小画质越高)
-preset medium(指定预设,在文件大小一样的情况下越慢的预设画质越好,或者说在画质一样的情况下越慢的预设文件更小)
预设从快到慢排列为ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo
-b:v 1000k(指定平均比特率,单位可以用k|m,作用是可以控制最终的文件大小,一般不能与”-crf”同时使用)
-y(覆盖输出文件)
-n(不覆盖输出文件)
-fs 数字(限制输出文件的大小,单位为字节)
-aspect 16:9(设置视频宽高比,可以写成4:3、16:9、1.3333、1.7777)
常见的用法
1.合并文件
list.txt文件内容为
file 01.mp4
file 02.mp4
ffmpeg -f concat -i list.txt -c copy 输出文件名
需要注意的是被合并的视频必须编码和封装格式保持一致
2.添加字幕
ffmpeg -i test.mp4 -i test.srt -c:a copy -c:v copy -c:s ass test.mkv
ffmpeg -i test.mp4 -vf subtitles=test.srt -c:a copy test.mp4
3.字幕转换
ffmpeg -i test.srt test.ass
4.转换为webm格式
ffmpeg -i test.mp4 -c:v vp9 -b:v 1m test.webm
ffmpeg -i test.mp4 -c:v vp9 -crf 10 -b:v 0 test.webm
vp9的crf值范围为0-63
要让vp9编码器保持稳定画质的时候必须指定”-b:v 0”
5.预设的使用
ffmpeg -i test.mp4 -c:a copy -c:v h264 -crf 22 -preset slow test.mkv
6.缩放
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
ffmpeg -i input.mp4 -vf scale=960:-1 output.mp4
scale=960:-1表示在输出时保持原始的宽高比
7.分别在左上、左下、右上、右下角加水印
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay output.mp4
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4
8.删除水印
格式为
-vf delogo=x:y:w:h[:t[:show]]
x:y 离左上角的坐标
w:h logo的宽和高
t 矩形边缘的厚度,默认值4
show 若设置为1有一个绿色的矩形,默认值为0
ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4
ffmpeg -i input.mp4 -vf delogo=x=0:y=0:w=220:h=90:band=100:show=1 output.mp4
9.视频旋转
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
ffmpeg -i input.mp4 -vf "vflip" output.mp4
数字的含义如下
0->逆时针方向旋转90度并垂直翻转
1->顺时针方向旋转90度
2->逆时针方向旋转90度
3->顺时针方向旋转90度并水平翻转
由于视频需要重新编码,所以不能指定-c:v copy
10.视频裁剪
ffmpeg -i input.mp4 -vf crop=x=10:y=20:w=100:h=100 -strict -2 output.mp4
11.只保留60秒到120秒之间的数据
ffmpeg -i input.mp4 -vf trim=60:120 output.mp4
00