ffmpeg 入门篇

基本用法

ffmpeg [全局选项] {[输入选项] -i 输入路径}... {[输出选项] 输出路径}...

  • 选项使用 -标识
  • 每个处理至少一个输入和一个输出
  • 输入选项在 -i前声明
  • 输出选项在输出url前声明

如:输入input.mp4,输出帧率更改为 30 fps,输出到output.mp4,且遇到同名文件不询问直接覆盖

ffmpeg -y -i input.mp4 -r 30 output.mp4

变量

名称描述
n输入的帧序号,从0开始
t随时间线递增的值,从0开始
ow输出的宽度
oh输出的高度
iw输入的宽度
ih输入的高度
W / main_w主视窗宽度
H / main_h主视窗高度
h / overlay_w覆盖层宽度
h / overlay_h覆盖层高度
text_w文本区域宽度
text_h文本区域高度

表达式

名称描述示例
abs(number)返回绝对值abs(-2)
between(x,min,max)若min ≤ x ≤ max,返回1,否则返回0between(1.5,1,2)
ceil(number)往上取整ceil(1.1)
floor(number)往下取整ceil(1.1)
gt(x,y)当x>y时,返回1,否则返回0gt(1,2)
gte(x,1)当x≥y时,返回1,否则返回0gte(1,2)
lt(x,y)当x<y时,返回1,否则返回0lt(1,2)
lte(x,y)当x≤y时,返回1,否则返回0lte(1,2)
if(x,y)当x返回非0,返回y的计算结果if(gt(t,1),lt(t,3))
if(x,y,z)当x返回非0,返回y的计算结果,否则返回z的计算结果if(gt(t,1),lt(t,3),eq(t,4))
ifnot(x,y)当x返回0,返回y的计算结果if(gt(t,1),lt(t,3))
ifnot(x,y,z)当x返回0,返回y的计算结果,否则返回z的计算结果if(gt(t,1),lt(t,3),eq(t,4))
isnan(x)当x为非数字,返回1,否则返回0isnan(1)
mod(x,y)返回 x%y 的计算结果mod(3,2)
trunc(x / expression)将值或表达式往0的方向取整trunc(-1,1) = -1.0;trunc(2.1) = 2.0
rotw(radian)返回能完全包含旋转后视频的最小宽度;仅在作为ow / oh参数的求值表达式下可用rotw(PI/4)
roth(radian)返回能完全包含旋转后视频的最小高度;仅在作为ow / oh参数的求值表达式下可用roth(PI/4)

Options

全局选项(部分)

选项描述
-y遇到同名文件不询问,直接覆盖
-n遇到同名文件不覆盖,退出进程
-stats打印编码的进度或统计信息。默认开启,不需要指定
-nostats关闭编码的进度或统计信息
-filter_complex_threads设定 filter_complex处理图像的线程数,默认cpu数
-loop设置loopfilter,值为1表示自动

输入 / 输出选项(部分)

选项类型描述示例
-iinput指定输入流-i input.mp4
-soutput定义帧输出尺寸,可能的值 宽度※高度 / 缩写-s 360*240
-tinput / output作为输入选项时,限制读取输入流的时长;作为输入选项时,时长外的流写入将忽略;支持格式 hh:mm:ss / 秒 / 毫秒(ms) / 微秒(us)-t 5
-vframesoutput设定输出帧的数量-vframes 30
-rinput / output设定帧率。作为输入选项时,则忽略源输入的时长信息,ffmpeg根据恒定的fps重新计算时长。作为输出选项时,保留源输入的时长,以设定的fps输出-r 30

-filter_complex

overlay

视频覆盖

参数描述示例
xnumber / expression覆盖的x轴坐标overlay=x=10:y=10
ynumber / expression覆盖的y轴坐标overlay=x=10:y=10
eval‘init’ / ‘frame’值为init时,表达式只会执行一次求值(包含t/ n的表达式将不会变化);值为frame时,表达式在每次输入帧都会求值。overlay=x=t×10:y=n×10:eval=‘frame’
shortest1/0是否在最短的输入终止时终止输出。1是;0否overlay=shortest=1
format‘yuv420’ / ‘yuv420p10’ / ‘yuv422’ / ‘yuv422p10’ / ‘yuv444’ / ‘rgb’ / ‘gbrp’ / ‘auto’

scale

缩放

参数描述示例
wnumber / expression缩放的宽度;当值为0时,使用输入宽度作为输出宽度;当值为负数时,根据提供的高度和源高度的比例 缩放宽度;当宽度高度都是负数,使用输入的宽度作为输出宽度。scale=w=10:y=10
hnumber / expression缩放的宽度;当值为0时,使用输入高度作为输出高度;当值为负数时,根据提供的宽度和源宽度的比例 缩放高度;当宽度高度都是负数,使用输入的高度作为输出高度。
eval‘init’ / ‘frame’值为init时,表达式只会执行一次求值(包含t/ n的表达式将不会变化);值为frame时,表达式在每次输入帧都会求值。

rotate

旋转视频

参数描述示例
angle / aradian / expression角度(弧度表示)rotate=a=PI / rotate=PI
ownumber / expression输出宽度;默认iw;rotate=ow=iw
ohnumber / expression输出高度;默认ih;rotate=oh=iw
fillcolor / chexadecimal color / ‘none’输出区域颜色填充rotate=fillcolor=0xa1b2c3

scroll

以恒定速率滚动视频

参数描述示例
horizontal / h[-1,1]水平滚动速率scroll=h=0.01
vertical / v[-1,1]垂直滚动速率scroll=v=0.01
hpos/ v[0,1]初始水平位置scroll=hpos=0.5
vpos / v[0,1]初始垂直位置scroll=vpos=0.5

vflip

垂直翻转视频

参数描述示例
-filter_complex “vflip”

hflip

水平翻转视频

参数描述示例
-filter_complex “hflip”

loop

帧 / 时间段 循环

参数描述示例
loopnumber循环次数。loop<0时,表示无限循环;loop>0时,表示循环次数;默认0loop=loop=1
startnumber循环起始帧,默认0loop=start=0
timenumber设定循环开始的秒数,仅在start=1时可用
sizenumber设定点开始的循环帧数量,默认0loop=size=10

drawtext

描绘文本
drawtext

参数描述示例
xnumber文本区域x轴坐标drawtext=x=10:y=10
ynumber文本区域y轴坐标drawtext=x=10:y=10
fontfileurl字体文件drawtext=fontfile=“/catalog/sub_catalog/font.ttf”
fontfont字体,默认Sans
fontcolor十六进制色值字体颜色drawtext=fontcolor=0xffffff
fontcolor_exprexpression指定生成颜色的表达式,指定fontcolor_expr会重写fontcolor
fontsizenumber字体大小,默认16
textstring描绘的文本
textfileurl描绘的文本文件,需要utf-8编码;不能同时指定text和textfile,否则会报错
start_numbernumber描绘起始帧,默认0
alpha[0,1]字体透明度
tabsizenumber每个tab键所使用的空格数,默认4

标签和引用

为输入的处理结果添加标签,在下一个处理包含上一个结果时,通过标签引用结果。
如:

ffmpeg -i input_1.mp4 -i input_2.mp4 -i input_3.mp4 -filter_complex [0:v]rotate=a=PI/4[给他个名字],[给他个名字][1:v]overlay=...

命令先把 input_1.mp4 应用 rotate,同时赋予标签[给他个名字],再引用rotate的结果([给他个名字])和 input_2.mp4 执行overlay。

  • []是标签的标记,可以是自定义的(建议使用英文),如[result_1];也可以通过下标对输入进行引用。
  • [0:v][1:v][2:v]分别表示对input_1.mp4,input_2.mp4,input_3.mp4进行引用(v表示对 video 的引用。若要引用 audio,使用[n:a])。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值