FFmpeg Filtergraphs -examples

最近在做和FFmpeg Filters 相关的工作,看了很多参考文档,完成工作,现在把工作做一个简单的记录,备忘。

complex filters 处理的是 多路输入和多路输出的的问题。这里只是涉及到了多路输入,一路输出。

写几个简单的应用的例子:

1 图片和视频的叠加(加水印或者加台标)

ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v]scale=50:50[a];[0:v][a]overlay=0:0" output.mp4

其中第一路输入的视频流名称是[0:v],第二个输入视频或者图片的名称为[1:v],以此类推。

同时每做一次处理,要给处理后的视频流起一个新的名字,方便叠加,比如[a],就是[1:v]这个视频流做scale处理后的名字。

overlay filter的叠加位置说明:

overlay=W-w    //右上角

overlay=0:H-h    //左下角
overlay=W-w:H-h    //右下角
overlay=H-h     //顶部中央
overlay=0:0     //左上角

效果图:


2 视频和视频的叠加(画中画)

ffmpeg -i input1.mp4 -i input2.mp4  -filter_complex "[1:v]scale=50:50[a];[0:v][a]overlay=0:0" -f flv output.flv

其实只是把第二路输入由图片换成视频而已,别的地方并未做任何改变。

3 再复杂一点尝试3路输入(视频叠加水印,在嵌入大视频中)

ffmpeg -i input1.mp4 -i input2.mp4 -i logo.png  -filter_complex "[1:v][2:v]overlay=W-w:H-h[a];[0:v]drawbox=0:0:240:162:black@0.5[b];[b][a]overlay=0:0" -f flv output.flv

在这里又给小视频加了一个框,用[0:v]drawbox=0:0:240:162:black@0.5[b]实现的在大视频上加了白色的边界框。

效果图:


3 流的叠加后台推送

ffmpeg -i stream1 -i stream2 -i zbxh1.png -filter_complex "[1:v][2:v]overlay=W-w:H-h[a];[0:v]drawbox=0:0:240:162:black@0.5[b];[b][a]overlay=0:0" -acodec aac -ac 1 -vcodec libx264 -deblock 0 -f flv rtmp://localhost:1935/myapp/test

把输入的视频文件换成流地址(亲测过http,rtmp,rtsp等的同种叠加和混搭),把保存的文件换成推送的地址,最后指明编码器等参数。

其中-deblock 0 选项是“去块效应”的,以免视频编码完成后产生块效应。


主要参考:https://ffmpeg.org/ffmpeg.html#Filtering



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值