ffmpeg:如何正确放置多个叠加层并淡出最顶层


6

我试图将几个叠加层放在彼此之上,并在一些帧之后淡出最顶层。因此,我正在使用2个.png文件,这些文件应按以下顺序放在最终视频中:

fademe.png < - 最顶层的叠加,应该在一些帧后褪色

overlay.png < - 第二个叠加层,始终可见

movie.mov < - 一部电影作为底层

我正在使用此代码从叠加层创建PNG编码的.mov:

ffmpeg -y -loop 1 -i fademe.png -loop 1 -i overlay.png -filter_complex "[0:0]fade=out:25:25[fad];[1:0][fad] overlay" -vframes 55 -vcodec png overlay.mov

然后我使用ffmbc将overlay.mov放在另一个视频的顶部。

(我正在使用ffmbc,因为最终输出将是ProRes4444)

ffmbc -y -threads 0 -i movie.mov -vf "movie=overlay.mov [watermark]; [in][watermark] overlay [out]"  -vcodec libx264 faded.mp4

输出视频看起来很好,直到淡入淡出开始,并且fademe.png [fad]似乎褪色为白色并对下面的颜色做一些奇怪的事情直到它消失。

当我改变最后的顺序overlay[1:0][fad] overlay[fad][1:0] overlay,所以它看起来是这样的:

ffmpeg -y -loop 1 -i fademe.png -loop 1 -i overlay.png -filter_complex "[0:0]fade=out:25:25[fad];[fad][1:0] overlay" -vframes 55 -vcodec png overlay.mov

褪色看起来正确,但overlay.png [1:0]不应该是最顶层。

我的猜测是,在我第一次尝试时,alpha通道出现了错误。

有什么建议如何解决这个问题?

Answers:


7

不必使用两个命令并使用alpha通道创建中间文件。具有3个输入,2个覆盖滤波器和淡入淡出滤波器的单个命令alpha=1应该执行此操作:

ffmpeg -y -i movie.mov -loop 1 -i overlay.png -loop 1 -i fademe.png \
-filter_complex '[0:v][1:v] overlay [V1]; \
[2:v] fade=out:25:25:alpha=1 [V2]; [V1][V2] overlay' \
faded.mp4

可悲的是,ffmbc无法处理-filter_complex。有没有办法用-vf选项做同样的事情?
evilheinz 2013年

1
@evilheinz不幸的是,ffmbc在开发方面落后了。你有什么理由需要它而且不能使用FFmpeg吗?理想情况下,ffmbc的附加功能将被移植回FFmpeg。
slhck 2013年

1
@evilheinz这个命令和你的命令之间最重要的区别是这个命令逐渐淡出alpha(这不是默认值); 尝试[0:0]fade=out:25:25:alpha=1[fad]在你的第一个命令中使用。
evilsoup 2013年

@slhck我打算用ffmbc来输出ProRes4444。上次我在ffmpeg上检查了ProRes4444编码时,它没有设置正确的fourcc,因此它在Quicktime Player中被识别为ProRes422(HQ)。使用ffmbc进行转码时,文件被正确检测为ProRes4444。
evilheinz 2013年

当使用alpha = 1时,@ evilsoup褪色仍然看起来很有趣...
evilheinz 2013年

1

我想我找到了一个解决方案:

首先,我创作了一个褪色徽标的中间电影

ffmpeg -y -loop 1  -i fademe.png -filter_complex "fade=out:25:25" -vframes 55 -vcodec png fademe.mov

然后我用ffmbc使用了这个命令

ffmbc -i movie.mov -vf "movie=overlay.png [over]; movie=fademe.mov [fade]; [in][over] overlay [inter]; [inter][fade] overlay [out]" -vcodec libx264 out.mp4

... Heureka!

坐在组合物顶部的徽标正在逐渐消失,变得光滑!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.