借鉴 https://blog.csdn.net/yu540135101/article/details/103025957
1. 设置输出视频的比特率为64kbit/s
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
2.强制使帧率达到24fps
ffmpeg -i input.avi -r 24 output.avi
3.控制输出文件大小
ffmpeg -i input.avi -fs 1024k output.avi
其中-fs是file size的缩写
4.视频裁剪
ffmpeg -i input.avi -vf crop=400:400 output.avi -y
crop的参数格式为 w:h:x:y,
w、h为输出视频的宽和高,
x、y标记输入视频中的某点,将该点作为基准点,向下进行裁剪得到输出视频(如果x y 不写的话,默认居中裁剪)
5.修改分辨率
-s调整分辨率
ffmpeg -i input.avi -s 320x240 output.avi
-s参数设置分辨率,参数值 WxH
scale filter调整分辨率
scale fileter可以有额外的参数
scale=width:height[:interl={1|-1}]
ffmpeg -i input.avi -vf scale=320x240 output.avi
改为原视频一半大小
ffmpeg -i input.avi -vf scale=iw/2:ih/2 output.avi
保持纵横比
ffmpeg -i input.avi -vf scale=400:-1
6. 转换视频
ffmpeg -i input.ogv -strict -2 output.mp4
以下参数-strict -2
是因为报错The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
才加的。
-i
为输入文件地址
7. 视频加速
ffmpeg -i 1.mp4 -vf "setpts=0.25*PTS" -strict -2 output.mp4
上面的0.25是加速倍速的倒数,这里为4倍加速
8. 视频裁剪
ffmpeg -ss 0 -i output3.mp4 -to 47 -c copy -copyts output4.mp4
-ss
是起始的秒数,-to
是截至的秒数,-copyts保持时间戳,可不加
或者命令
ffmpeg -ss 00:00:00 -t 00:00:36 -i AMCL.ogv -strict -2 output.mp4
-ss
是起始的秒数,-t
是视频持续的时间
9. 旋转视频
ffmpeg -i 2.mp4 -vf transpose=2 -strict -2 c.mp4
tanspose=1或2进行左右90度旋转
10. 合并视频
新建一个txt文件
ffmpeg -f concat -i mylist.txt -c copy concat.mp4
11.分离视频和音频
ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流
12.常用的选项
ffmpeg -i input.avi -r 1 -t 4 -f image2 ./image-%05d.jpeg
-i 表示视频地址或视频流地址
-r截帧频率,如果3s截取一帧,则参数为1/3,如果1s截取3帧,则参数为3
-f fmt (input/output)’ 强制输入或输出文件格式。 -f image2表示输入或输出文件的格式是image2格式(图片格式)
-t duration (output)’ 当到达 duration 时,停止写输出。示例中的4表示到第4s停止输出
-loglevel error 只有error级别的日志才会输出
-y 有相同名字的文件是否覆盖
-y (global) 覆盖输出文件而不询问
-n (global) 不覆盖输出文件,如果一个给定的输出文件已经存在,则立即退出