比较low 比较low 比较low
背景
前几天客户需求比较多,都需要某音上面都水印玩法,可是我们确实没做到,就尝试自己做一下试试,遇到很多坑,目前来看,单从ffmpeg命令上,一行命令是搞不定的
暂时实现思路
视频加gif水印,gif循环,同时n秒后水印切换位置继续循环
- 视频切割
- 加上水印
- 后面一段视频加水印
- 合成视频
ffmpeg -ss 0 -t 15 -accurate_seek -i giftest.mp4 -codec copy cut01.mp4
//剪裁前面部分视频
ffmpeg -ss 15 -t 15 -accurate_seek -i giftest.mp4 -codec copy cut02.mp4
//剪裁后面部分视频
ffmpeg -i giftest.mp4 -ignore_loop 0 -i qiniu.gif -filter_complex overlay=shortest=1:x=5:y=6 addgif01.mp4
//水印添加在左上角
ffmpeg -i cut.mp4 -ignore_loop 0 -i qiniu.gif -filter_complex overlay=shortest=1:x=main_w-overlay_w-5:y=main_h-overlay_h-6 addgif02.mp4
//水印添加在右下角
ffmpeg -i addgif01.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input01.ts
ffmpeg -i addgif02.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input02.ts
//生成ts
ffmpeg -i "concat:input01.ts|input02.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart outputgif.mp4
//合成视频
//某音同款动态水印视频
查看视频效果
说说遇到那些坑,以下命令都不行,有大神可以指点一步到位的命令吗,暂时不通过改源码的姿势
ffmpeg -i mytest.mp4 -ignore_loop 0 -i qiniu.gif -filter_complex overlay=shortest=1:x=10:y=10 test03.mp4
//可以生成循环播放的gif,但是固定了logo位置
ffmpeg -re -i mytest.mp4 -vf “movie=qiniu.gif,scale=80*50[filter]; [in][filter] overlay=x=‘if(lte(t,8),10,main_w-overlay_w-10)’:y=‘if(lte(t,10),10,main_h-overlay_h-10)’ [out]” -vcodec libx264 filterTest04.mp4
//8秒后logo切换到右下角,但是logo不循环
ffmpeg -i mytest.mp4 -ignore_loop 0 -i qiniu.gif -filter_complex overlay=shortest=1:x=10:y=10" test03.mp4
ffmpeg -re -i myfilter.mp4 -vf “movie=qiniu01.png,scale=80*50[filter]; [in][filter] overlay=x=‘if(gte(-1t,0),10,12)’:y='if(gte(-1t,0),10,12)’ [out]” -vcodec libx264 filter001.mp4
ffmpeg -i mytest.mp4 -ignore_loop 0 -i qiniu.gif -filter_complex -vf overlay=shortest=1:x=10:y=10" test03.mp4
未完待续…