ffmpeg-给视频添加水印常用命令

1.实现每隔10秒交替出现logo

ffmpeg -y -t 60 -i input.mp4 -i logo1.png -i logo2.png -filter_complex "overlay=x=if(lt(mod(t\,20)\,10)\,10\,NAN ):y=10,overlay=x=if(gt(mod(t\,20)\,10)\,W-w-10\,NAN ) :y=10" output.mp4
  1. 60 编辑视频时长,如果填写只会处理并输出前60秒的视频,不填写会处理整个视频
  2. x 水印的左上角的x坐标
  3. y 水印的左上角的y坐标
  4. input.mp4 输入的视频文件(需要处理的)
  5. output.mp4 输出的视频文件(已经处理完成的)
  6. if(gt(mod(t,20),10),W-w-10,NAN )中第二个10logo出现的时长,即是说水印会显示10

2.实现跑马灯

ffmpeg -i input1 -i input2 -vcodec libx264 -an -filter_complex "overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0" -s 320x240 output.mp4

input1 放在底部的视频
input2 放在上面的视频
320x240 输出视频的宽高

3.实现2秒后logo从左到右移动

ffmpeg -i input.mp4 -vf "movie=logo.png[logo];[in][logo]overlay=x='if(gte(t\,2)\,((t-2)*80)-w\,NAN)'" output.mp4

80 移动的距离,单位像素

4.实现gif格式的logo循环命令

ffmpeg -i video.mpg -ignore_loop 0 -i loop.gif -filter_complex  "[0:v][1:v]overlay=10:10:shortest=1" -vcodec mpeg2video out.mpg

5.实现视频添加字幕

ffmpeg  -i  input  -vf  drawtext=fontfile=arial.ttf:text=welcome output

6.实现周期显示输入的文字水印

ffmpeg -i input.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf:text='testtest':x=w-100:y=100:enable=lt(mod(t\,3)\,1):fontsize=24:fontcolor=yellow@0.5:shadowy=2" output.mp4

7.编写代码遇到错误

Cannot create buffer sink ret = -12 
修改
AVFilter *buffersrc  = avfilter_get_by_name("buffer");
AVFilter *buffersink = avfilter_get_by_name("buffersink");

记一下用FFMPEG 的几个小技巧

1.在FFMPEG中,加入Drawtext滤镜后暂时没有找到换行的好方法,于是可以用

ffmpeg -re -i G:/大圣归来.mkv -vcodec libx264 -s 1080*720 -vf  "[in]drawtext=fontfile=/Windows/Fonts/simhei.ttf:x=w*0.6*sin(t)*sin(t):y=20:fontcolor=white:fontsize=60:text='%{localtime\:%Y\\\-%m\\\-%d}' ,drawtext=fontfile=/Windows/Fonts/simhei.ttf:x=w*0.7*sin(t)*sin(t):y=90:fontcolor=white:fontsize=60:text='%{localtime\:%H\\\:%M\\\:%S\}',drawtext=fontfile=/Windows/Fonts/simhei.ttf:x=w*0.8*sin(t)*sin(t):y=160:fontcolor=white:fontsize=60:text="搜索12345"[out]"  -f flv rtmp://192.168.1.111/oflaDemo/live

这个 in 和 out 是必须的!!!

2.关于字体drawtext=fontfile=/Windows/Fonts/simhei.ttf:x=w*0.6*sin(t)*sin(t):y=20:fontcolor=white:fontsize=60:text='%{localtime\:%Y\\\-%m\\\-%d}'
这里的字体可以在系统路径中找到,特别要注意,有些如果用了一些不支持中文的字体,中文就显示不出来,在我这里显示一个框。

3.自己做了个撞墙反弹效果,具体是:

x=w*pow(-1\,t-mod(t\,1))*(mod(t\,1)-mod(t-mod(t\,1)\,2))
y=0.47*h*(1-mod(t+1.618-mod(t+1.618\,2)\,4))*(2*mod(t+1.618\,2)-mod(t+1.618\,4))
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值