ffmpeg滤镜


ffmpeg简单滤镜 -vf:一个输入,对应一个输出;复杂滤镜 -filter_complex

滤镜描述符规则

“,” —— 前一个输出作为后一个输入
“;” —— 表示两个滤镜为并列关系
“:” —— 用于分割参数
 

Overlay
最常使用的滤镜;会以第一个输入为背景,后续的叠加到背景上;

用例:视频加logo

ffplay -i logo.mp4 -vf "movie=logo.png,scale=64:64[water];[in][water]overlay=W-w-30:10"

参数详解:-vf使用简单滤镜overlay,"movie=logo.png,scale=64:64[water]"定义logo,并将其裁剪为64x64的大小,处理后的输出记为water;

“[in][water]overlay=W-w-30:10”—— in代表视频输入,作为背景;water表示后续输入,叠加到背景上;W-w-30:10定义logo位置,W表示背景视频宽度,w表示logo宽度;

视频去logo

ffplay -i logo-with.mp4 -vf "delogo=544-64-30:10:64:64:show=1" logo-without.mp4

原理是使用插值法将该区域的像素使用周边像素代替

使用滤镜delogo处理,接受5个参数,delogo=x:y:w:h:show
分别表示处理区域的坐标和宽高,show为可选参数,表示是否显示绿色矩形框帮助确定选取是否合适,可以在ffplay预览时结合使用;

scale
裁剪滤镜,`scale=w:h;

使用的滤镜为overlayscale,使用复杂滤镜filter_complex[1:v]表示第2个媒体文件的视频信息;

用例:
ffmpeg -i logo.mp4 -i inner.mp4 -filter_complex "[1:v]scale=180:120[pip];[0:v][pip]overlay=W-w-30:10" pip.mp4

将第2个媒体文件的视频裁剪为180x120, 叠加在第一个媒体文件的右上角

音频混音

主要有amergeamix —— amerge只是简单地将多个音频都输出到输出文件,amix是进行真正的混音处理;

amix会自动获取输入多媒体文件的两路音频;weight设定多路音频混音时各自的比重,总和为1;

ffmpeg -i logo.mp4 -i slice-a.mp4 -filter_complex "amix=inputs=2:duration=shortest:weights='0.1 0.9'" mixin.aac

音视频倍速

ffmpeg -i logo.mp4 -filter_complex "[0:v]setpts=2*PTS[vo];[0:a]atempo=0.5[ao]" -map "[vo]" -map "[ao]" new.mp4

使用setpts滤镜处理视频倍速;

使用atempo=1.5表示音频1.5倍速;

视频转场
让多段拼接视频场景转换更加自然。

用例:淡入淡出的转场特效

ffmpeg -i slice-a.mp4 -i slice-b.mp4 -i slice-c.mp4 -filter_complex "[0:v]fade=t=out:st=10:d=2[v0];[1:v]fade=t=in:st=0:d=2[tmp];[tmp]fade=t=out:st=10:d=2[v1];[2:v]fade=t=in:st=0:d=2[v2];[v0][v1][v2]concat=n=3:v=1:a=0[vo];[0:a][1:a][2:a]concat=n=3:v=0:a=1[ao]" -map "[vo]" -map "[ao]" t.mp4

参数详解:concat拼接视频:v=1:a=0表示保留视频忽略音频

-map用于获取使用filter_complex滤镜对应的多输出文件,这里分别获取音频和视频,然后输出t.mp4

xfade转场滤镜(xfade滤镜须在FFmpeg 4.3以上版本使用)


A场:按照时间顺序,转场前的画面叫做A场(下图中蓝色画面);
B场:按照时间顺序,转场后的画面叫做B场(下图中青色画面);
起始位置:offset,指转场效果在A场输入源的何处开始起作用,
持续时长:duration,指转场特效持续的时长。

转场基础

              |<--offset

              |<--duration-->|

AAAAAAAAAAAAAAAAAAAAAA

              BBBBBBBBBBBBBBBBBBBBBBBBBBB

对应输出为:

AAAAAAABABABABABABABABBBBBBBBBBBB

用例:

ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "xfade=transition=radial:duration=1:offset=0,format=yuv420p" -y output.mp4

ffmpeg -i 2.mp4 -i 3.mp4 -filter_complex "xfade=transition=slideleft:duration=2:offset=0,format=yuv420p" -y output2.mp4

duration:持续时长,默认值1秒;offset:开始位置,默认值0。单位都是秒

transitions=( //31种特效
 "fade"       
 "wipeleft"   
 "wiperight"  
 "wipeup"     
 "wipedown"   
 "slideleft"  
 "slideright" 
 "slideup"    
 "slidedown"  
 "circlecrop" 
 "rectcrop"   
 "distance"   
 "fadeblack"  
 "fadewhite"  
 "radial"     
 "smoothleft" 
 "smoothright"
 "smoothup"   
 "smoothdown" 
 "circleopen" 
 "circleclose"
 "vertopen"   
 "vertclose"  
 "horzopen"   
 "horzclose"  
 "dissolve"   
 "pixelize"   
 "diagtl"     
 "diagtr"     
 "diagbl"     
 "diagbr"     
 )

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值