FFMPEG:如何启用覆盖过滤器直到视频结束?(不知道持续时间)

FFMPEG:如何启用覆盖过滤器直到视频结束?(不知道持续时间)

我希望得到一些帮助来完成我正在使用 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-5overlay=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)'

相关内容