视频 – FFMPEG结合图像,mp3和徽标水印

我认为这会有效,但我遇到了错误.

ffmpeg -loop 1 -i "ARTWORK.jpg" -filter_complex "overlay=80:0" -i "MUSIC.mp3" -i "WATERMARK.gif" -filter_complex "overlay=10:350" -s 640x480 -shortest -vcodec libx264 -acodec aac -strict experimental -movflags faststart "CONVERTED.mp4"

如果我没有把-filter_complex“overlay = 80:0”部分(将艺术品“放在中间”),它可以工作,但艺术品不会居中(它是一个480×480 jpeg)

我得到的错误是

Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_overlay_0

它与2个过滤器复杂的部件有关,但两者都是必要的,所以不确定如何“标记”它们?

最佳答案 更新:OP希望实现的目标是能够定位两个叠加层.在这种情况下,显而易见的答案是您使用第三个输入作为主输入,例如黑框:

 ffmpeg -f lavfi -i color=black:800x600 -i <image1> -i <image2> -i <audio> -filter_complex 'overlay=...,overlay=' <output>

叠加滤波器需要两个输入:主输入和叠加输入.

您只有2个图像输入,因此您不能在同一个命令中使用两个叠加过滤器,因为它需要第三个可视流.这就是为什么说它找不到匹配的流.

例如,您可以使用两个叠加过滤器为视频添加两个不同的徽标:

ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=...,overlay=' output

在您的情况下,主要输入是艺术品,水印是需要在单个叠加中定位的叠加.

看看the documentation,因为有些参数可以帮助您实现目标,无论输入大小如何.查看主要和叠加输入的宽度和高度:main_w,main_h,overlay_w,overlay_h.

示例用法(从右下角10px覆盖):

叠加= main_w-overlay_w-10:main_h-overlay_h-10

点赞