在学习及使用的过程中用到的命令记录一下,方便查找。同时记录下一些常用的参数说明,方便理解修改。
参数说明
- -i——设置输入文件
- -f——设置输出格式
- -y——若输出文件已存在时则覆盖文件
- -fs——超过指定的文件大小时则结束转换
- -t——指定输出文件的持续时间,以秒为单位
- -ss——从指定时间开始转换,以秒为单位
- -title——设置标题
- -timestamp——设置时间戳
- -vsync——增减Frame使影音同步
- -c——指定输出文件的编码
- -metadata——更改输出文件的元数据
- -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,依此类推。)
视频裁剪
ffmpeg -i input.mp4 -ss 开始时间 -t 持续时间 -vcodec copy -acodec copy -preset superfast output.mp4
音视频分离
- 获取视频轨道 ffmpeg -i input.mp4 -an -vcodec copy output.mp4
- 获取音频轨道 ffmpeg -i input.mp4 -vn -acodec copy output.mp3
文件拼接
这儿的文件可以是视频也可以是音频
ffmpeg -y -f concat -safe 0 -i a.txt -c copy %s
-f 表示采用concat协议 -c表示采用什么编码 copy表示不重新编码 a.txt 文件中的内容及格式如下,以音频为例
file input1.mp3
file input2.mp3
注意文件格式,相同格式输出文件的格式也要一样,如果不同需要进行转码(格式不同没有验证过)
添加图片水印
- ffmpeg -y -i input.mp4 -i input.png -filter_complex [0:v]scale=iw:ih[outv0];[1:0]scale=100.0:50.0[outv1]overlay=10:10:enable=between(t,0,1) -preset superfast output.mp4
overlay后面表示距左边跟上边的距离是10 enable=between(t,0,1)表示从0秒到1秒显示,之后消失 - **ffmpeg -y -i input.mp4 -i input.png -filter_complex overlay=W/2-w/2:H/2-h/2:enable=between(t,0,1) -preset superfast output.mp4 **
W表示视频宽H表示视频高w表示图片宽h表示图片高
添加背景音乐
ffmpeg -y -i input.mp4 -i input.mp3 -vcodec copy -acodec copy -t 时间 output.mp4
-t后面的时间表示持续时间,举例:时间=20 生成后的视频就是20秒 即使视频时长大于20秒
添加GIF
ffmpeg -y -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex [0:v]scale=iw:ih[outv0];[1:0]scale=100.0:50.0[outv1];[outv0][outv1]overlay=10:10:shortest=1 -preset superfast output.mp4
但是测试gif播完后就变成静止的了
添加文字
ffmpeg -y -i %s -vf drawtext=fontfile=%s:text=%s:x=10:y=10:fontsize=24:fontcolor=white:shadowy=2 %s
混音
1、ffmpeg -y -i %s -i %s -filter_complex [0:a]volume=1[a1];[1:a]volume=0.5[a2];[a1][a2]amix=inputs=2:duration=first:dropout_transition=1[aout] -map [aout] output.mp4
代码里面volume可以进行设置音量大小
amix=inputs=2:duration=first:dropout_transition=1
inputs代表音轨输入数量
duration代表时长,当前使用第一个输入作为时长
dropout_transition代表转换时间为1秒,最后效果是逐渐减淡
2、ffmpeg -y -i input1.mp3 -i input2.mp3 -filter_complex [0:a][1:a]amerge=inputs=2[a] -map 0:v -map [a] -ac 1 -c:v copy -shortest output.mp3
后续再使用其他命令的时候再更新
最后记录一些命令参考的博文: