使用ffmpeg对视频指定时间点加入指定音频和gif动图 实现水印旋转

  • 为了丰富文章,本文也会演示一些动画效果,如跑马灯效果,淡入淡出等效果

  • 在上一篇文章中,我们使用了把gif图片转化为mov透明底的视频,使用ffmpeg画中画的滤镜效果,把动画加入到了视频中。

  • 使用到了视频的剪辑和合并技术

  • 使用到了视频的语音提取,剪辑,替换视频语音等技术。

  • 使用到了视频的编码和解码技术

  • 那么本次,我们使用简单一点的技术去实现在视频中第n秒出现gif动图,并播放声音特效,简单说,就是在视频某个时间,出现了一个大大的赞的动图,并说 biubiubiu...

  • 这个技术竟然还有人在网上发博客,说是自己钻研很久才有了方案,需要付费探讨,让人汗颜。ffmpeg本来就是开源,我们还是本着开源的精神来! image.png

  • 注:本文为了方便演示,都是在源文件目录下执行的命令,如果不同目录请使用具体路径

  • 好了,废话到此结束!开始干活!

处理音频文件

  • 先看一下目录文件,有源文件001.mp4 ,动图87.gif,特效语音tx.wav 字幕文件皮肤粗糙_棒棒-2.ass

zhangguofu@zhangguofudeMacBook-Pro test2 $ ls
001.mp4                   87.gif                    tx.wav                    皮肤粗糙_棒棒-2.ass

  • 提取源视频的音频

ffmpeg -i 001.mp4  -vn -acodec copy 001.aac
  • 使用混合音效,将特效和音频合并在一起,特效在音频播放6s后开始播放

ffmpeg -y -i 001.aac -itsoffset 6 -i tx.wav -filter_complex amix=inputs=2:duration=first:dropout_transition=4 -async 1 t2.wav

-itsoffset 6 就是 延迟6s的意思 amix是将两个音频混合一起播放 inputs=2是说两个音频资源

  • 替换原视频的音频文件

ffmpeg -i 001.mp4 -i t2.wav -c:v copy -map 0:v:0 -map 1:a:0 001_1.mp4

-map 0:v:0将输入的第一(索引0)视频流映射到输出中的第一(索引0)视频流。 -map 1:a:0将输入的第二(索引1)音频流映射到输出中的第一(索引0)音频流。 如果音频比视频长,则需要-shortest在输出文件名之前添加。这个参数在上篇文章用到过。 不指定音频编解码器,将自动选择一个有效的编解码器。您可以指定一个,例如-c:a libvorbis在之后添加-c:v copy。

  • 那么此刻。biubiu的音效已经加入到视频中去了。001_1.mp4 就是我们想要的文件

把gif图加入到视频中去

ffmpeg -y -i 001_1.mp4  -ignore_loop 0 -itsoffset 6  -i 87.gif  -filter_complex '[0:0]scale=iw:ih[a];[1:0]scale=300:300,fade=t=in:st=6:d=3:alpha=1[wm];[a][wm]overlay=x=350:y=60:shortest=1' s01.mp4

-ignore_loop 0 表示动画会一直循环播放,1表示播放一次 -itsoffset 6 表示第6s开始播放动画 [0:0]scale=iw:ih 表示源视频的大小 [1:0]scale=300:300 表示动画的大小是300*300 fade=t=in:st=6:d=3:alpha=1第6s开始淡入,持续3s,添加Alpha频道, 再补充一点小知识,[0:v] fade=in:0:10; 表示0到10帧淡入 overlay=x=350:y=60 表示坐标

  • 为了效果,我加上字幕

ffmpeg -i s01.mp4 -vf ass=皮肤粗糙_棒棒-2.ass -b:v 3000K s01_1.mp4
  • 播放效果如下 image.png

  • 接下来再给大家演示一下,动图跑马灯的效果

ffmpeg -i 001.mp4 -i 87.gif -filter_complex "[0:v][1:v] overlay=y='if(gte(t,2), -h+(t-2)*800, NAN):x=20"  run.mp4

这样那个gif动画就会从天而降了 image.png

  • 另外再补充一条命令,如何在gif动图以某个角度 出现在 视频里面呢

ffmpeg -i  87.gif -i 001.mp4 -filter_complex '[0]format=pix_fmts=rgba[v0];[v0]rotate=a=PI/6:c=ffffff00[v1];[1][v1]overlay[v2]' -map [v2] -c:v libx264 test.ts

rotate=a=PI/6 PI 是180度 /6就是30度 image.png

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老A技术联盟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值