ffmpeg常用命令记录

一、命令格式:

1.1ffmpeg <全局参数> <输入文件参数> -i<输入文件> <输出文件参数> <输出文件>

常用参数:
-y:全局参数,不经过确认,输出覆盖同名文件;
-c:a :指定音频编码器;
-c:v: 指定视频编码器;
-a:n :去除音频流;
-v:n :去除视频流;
-af: 音频过滤器;
-vf: 视频过滤器,后面接处理参数;
\-c:指定编码器;
-c copy:直接复制,不经过重新编码(这样比较快);
-f 用于指定输入或输出的格式,即应该如何解释输入数据,或者应该如何封装输出数据 ;

    -f mp4 : 表示 输入或输出 的 文件格式是 mp4 格式 ;
    -f avi : 表示 输入或输出 的文件格式是 avi 格式 ;
    -f flv : 表示 输入或输出 的文件格式是 flv 格式 ;
    -f mov : 表示 输入或输出 的文件格式是 mov 格式 ;
    -f mkv : 表示 输入或输出 的文件格式是 mkv 格式 ;
    -f wav : 表示 输入或输出 的文件格式是 wav 格式 ;
    -f rawvideo : 表示 原始视频 数据流格式 , 通常用于一些专业的音视频处理 ;
    -f null : 特殊的格式 , 用于不产生任何输出文件 , 通常用于测试或性能分析 ;
    -f image2 : 处理图像序列 , 将 视频帧 保存为一系列的 图片或将图片序列编码成视频 ;
    -f image2pipe : 用于通过管道传输图像数据的格式 , 通过标准输入/输出 ( stdin/stdout ) 或其他管道机制将图像数据传递给 FFmpeg 或从 FFmpeg 接收图像数据 ;
-f mpegts : 表示 MPEG 传输流格式,常用于流媒体传输

二、对视频分辨率进行缩放,scale

ffmpeg -i test.mp4 -vf fps=25,scale=w=512:h=512 -qmin 1 -q:v 1 resized.mp4

# -vf:fps, scale
# -qmin 1:q的最小值设定为1
# -q:v 1:设置图像质量, 2为保存为高质量

scale=w=宽度:h=高度;

iw和ih分别为当前视频的宽度和高度;

将宽度或高度设置为-1表示将保持原始视频长宽比进行缩放;

三、对视频进行裁剪

3.1空间裁剪crop

ffmpeg -i test.mp4 -vf crop=256:256:128:128 crop.mp4
ffplay crop.mp4

# 256:256为裁剪的分辨率
# 128:128为裁剪的原点相对于左上顶点的距离

3.2时间裁剪-ss

ffmpeg -i test.mp4 -c:v libx264 -crf 18 -ss 00:00:05 -to 00:00:10 split1.mp4
ffmpeg -i test.mp4 -c:v copy -c:a copy -ss 00:00:05 -to 00:00:10 split2.mp4
ffmpeg -i test.mp4 -c:v libx264 -crf 18 -ss 00:00:01 -t 00:00:06 split3.mp4
ffmpeg -i test.mp4 -c:v copy -c:a copy -ss 00:00:01 -t 00:00:06 split4.mp4

进行重新编码相对于copy效果比较符合预期。

详细信息参考:使用ffmpeg截取视频片段_ffmpeg 截取视频片段-CSDN博客

四、对视频进行填充,pad

ffmpeg -i test.mp4 -vf pad=1024:1024:256:256:white pad.mp4
ffplay pad.mp4

# 1024:1024为padding后的尺寸;
# 256:256为原始视频左上顶点在1024*1024的图像中的坐标;
# white为padding像素的颜色;

padding的颜色可以通过十六进制数来表示rgb颜色;

五、对视频进行翻转,hflip,vflip

ffmpeg -i test.mp4 -vf hflip hflip.mp4
ffmpeg -i test.mp4 -vf vflip vflip.mp4

六、在视频中加入视频(画中画),overlay;

前景窗口(第二输入)覆盖在背景窗口(第一输入)的指定位置。

ffmpeg -i test1.mp4 -i test2.mp4 -filter_complex overlay=W-w:H-h overlay.mp4

# -filter_complex:
# overlay=W-w:H-h为前景窗口左上顶点在背景窗口中的坐标

#变量说明:如下变量可用在 x 和 y 的表达式中
#main_w 或 W 主输入(背景窗口)宽度
#main_h 或 H 主输入(背景窗口)高度
#overlay_w 或 w overlay 输入(前景窗口)宽度
#overlay_h 或 h overlay 输入(前景窗口)高度

七、在视频中加入文字,drawtext

ffmpeg -i test.mp4 -vf drawtext=fontcolor=black:fontsize=50:text='HelloWorld':x=0:y=100 drawtext.mp4

# fontcolor为颜色
# fontsize为字号;
# text为内容;
# x:y为显示的坐标;

八、视频拼接,空间拼接,时间拼接

8.1空间拼接

ffmpeg -i test1.mp4 -i test2.mp4 -filter_complex "[0:v]pad=iw*2:ih*1[a];[a][1:v]overlay=w:0" concat.mp4

# -filter_complex
# [0:v]pad=iw*2:ih*1[a]:将第0个输入(test1.mp4)的视频padding为两倍宽度的视频[a];
# [a][1:v]overlay=w:0:将第1个输入(test2.mp4)视频作为前景覆盖到视频[a]上,坐标为w:0;

参考:左右拼接、上下拼接、2*2拼接

ffmpeg 常用命令_ffmpeg -r -q-CSDN博客

8.2时间拼接

ffmpeg -i test.mp4 -qscale 4 1.mpg
ffmpeg -i test2.mp4 -qscale 4 2.mpg

ffmpeg -i "concat:1.mpg|2.mpg" -c copy output.mpg
ffmpeg -i output.mpg -y -qscale 0 -vcodec libx264 output.mp4
# or
ffmpeg -i concat:"1.mpg|2.mpg" -c copy concat.mp4

九、视频转为图像

ffmpeg -i test.mp4 -q:v 1 -start_number 0 imgs/%05d.jpg
# or 
ffmpeg -i test.mp4 -r 10 -f image2 imgs/%05d.jpg

# -q:v 1:图像质量, 2为保存为高质量
# -start_number 0:为保存图片名字的起始index
# -r 10:帧数 10
# -f image2: 定格式化的格式为image2
# %5d:以为5位数按正序编号

十、图像转为视频

ffmpeg -framerate 25 -i ./imgs/%d05.jpg -c copy -y video.mp4

# -framerate 25: 帧率

十一、视频添加音频

ffmpeg -i test.mp4 -i audio.wav -y -v quiet -shortest new.mp4

# -v quiet:静默工作,不输出版本、工作信息
# -shortest:在输出文件前增加-shortest参数,让生成的视频最短化

参考资料:

https://cloud.tencent.com/developer/article/2388711

https://ffmpeg.org/ffmpeg-filters.html

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值