ffmpeg语法

2020-04-08 18:20:25
854次阅读
0个评论
ffmpeg的一般语法是
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

登录 后评论。没有帐号? 注册 一个。