Ffmpeg/lavfi 是否可以淡出加载了 movie= 过滤器而不是 -i 参数的图像覆盖
Ffmpeg/lavfi Is it possible to fade out an image overlay that was loaded with a movie= filter not a -i parameter
我试过类似的东西:
movie='overlaylogo.png',fade=out:st=5:d=1[logo],[in][logo]overlay='0:0'[out]
但它似乎坚持 100% 不透明度,在 movie=
加载后添加 loop=loop-1
和 fps=24
过滤器似乎效果不大,是否需要一些步骤将图像转换为视频以应用淡入淡出?
关键是让您的流保持活跃,这样 fade
过滤器才能发挥作用。图像输入在发送帧后立即消失。
有了 -i
我们会做
ffmpeg -i input.mp4 -loop 1 -i logo.png \
-filter_complex [1:v]fade=out:st=5:d=1:alpha=1,[0:v]overlay=0:0:shortest=1[out] \
-map [out] -map 0:a output.mp4
-loop
image2
输入选项使流保持活动状态。 movie
源过滤器必须做同样的事情。它有 loop
选项,但有一个警告:“请注意,当电影循环播放时,源时间戳不会更改,因此它将生成非单调递增的时间戳。”所以,你需要添加 setpts
过滤器来自己建立单调递增的时间戳:
ffmpeg -i input.mp4 \
-vf movie=logo.png:loop=0,setpts=N/FR/TB,fade=out:st=5:d=1,[in]overlay=0:0:shortest=1[out] \
output.mp4
P.S., loop=-1
(不是 1
)也应该有效(而且它可能不需要 setpts
过滤器来修复时间戳)。
我试过类似的东西:
movie='overlaylogo.png',fade=out:st=5:d=1[logo],[in][logo]overlay='0:0'[out]
但它似乎坚持 100% 不透明度,在 movie=
加载后添加 loop=loop-1
和 fps=24
过滤器似乎效果不大,是否需要一些步骤将图像转换为视频以应用淡入淡出?
关键是让您的流保持活跃,这样 fade
过滤器才能发挥作用。图像输入在发送帧后立即消失。
有了 -i
我们会做
ffmpeg -i input.mp4 -loop 1 -i logo.png \
-filter_complex [1:v]fade=out:st=5:d=1:alpha=1,[0:v]overlay=0:0:shortest=1[out] \
-map [out] -map 0:a output.mp4
-loop
image2
输入选项使流保持活动状态。 movie
源过滤器必须做同样的事情。它有 loop
选项,但有一个警告:“请注意,当电影循环播放时,源时间戳不会更改,因此它将生成非单调递增的时间戳。”所以,你需要添加 setpts
过滤器来自己建立单调递增的时间戳:
ffmpeg -i input.mp4 \
-vf movie=logo.png:loop=0,setpts=N/FR/TB,fade=out:st=5:d=1,[in]overlay=0:0:shortest=1[out] \
output.mp4
P.S., loop=-1
(不是 1
)也应该有效(而且它可能不需要 setpts
过滤器来修复时间戳)。