我希望得到一些帮助来完成我正在使用 FFmpeg 的项目(我根本不是视频编辑专家!!)。
基本想法 我在一个文件夹中有很多视频,我想压缩它们 + 在每个视频前添加一个简短的视频免责声明 + 在整个视频中添加一个徽标作为覆盖(但不是在免责声明期间,大约 12 秒)。目前我正在使用这个:
ffmpeg -i intro.mpg -i video.avi -i logo.png -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[vid1];[vid1][2:v]overlay=W-w-5:H-h-5:enable='between(t,12,300)'[vid2]" -map "[vid2]" -strict -2 -c:v libx265 -x265-params crf=28 -preset ultrafast -movflags faststart output.mp4
它可以起作用,但是我必须对许多视频使用相同的命令,而且我不知道它们的持续时间(我的计划是使用某些东西for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done
)。
enable='between(t,12,X)'
任何设置过滤器设置的方法X持续时间,例如“直到视频结束”?非常感谢!
先进的
解决上一个问题已经足够好了,但是,我还是很好奇…… 能否让 logo.png 覆盖在一定时间后移动位置,直到电影结束?例如,10 分钟,然后 10 分钟overlay=W-w-5:H-h-5
,overlay=5:H-h-5
然后 10 分钟overlay=5:5
,最后overlay=W-w-5:5
再从右下角开始一个新的循环……也许从类似这样的地方开始?enable=lt(mod(t\,3)\,1)
(不知道在哪里可以找到关于过滤器的友好文档……)再次感谢您!
丹尼尔
答案1
使用
overlay=W-w-5:H-h-5:enable='gt(t,12)'
对于按逆时针方向移动叠加层,每十分钟(即 600 秒),
overlay='5+mod(trunc(((t-12)+1200)/1200),2)*(W-w-10)':'5+mod(trunc(((t-12)+1800)/1200),2)*(H-h-10)':enable='gt(t,12)'