我认为这会有效,但我收到了错误。
db_file="szs.db"
如果我没有将-filter_complex“overlay = 80:0”部分放置(将图稿放在“中间”)它可以正常工作,但艺术品不会居中(它是一个480x480 jpeg)
我得到的错误是
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"
它与2个过滤器复杂部分有关,但两者都是必要的,所以不确定如何“标记”它们?
答案 0 :(得分:2)
更新:OP希望实现的目标是能够定位两个叠加层。在这种情况下,显而易见的答案是您使用第三个输入作为主输入,例如黑框:
ffmpeg -f lavfi -i color=black:800x600 -i <image1> -i <image2> -i <audio> -filter_complex 'overlay=...,overlay=' <output>
overlay
过滤器需要两个输入:主输入和叠加输入。
您只有2个图像输入,因此您不能在同一个命令中使用两个overlay
过滤器,因为它需要第三个可视流。这就是为什么说它找不到匹配的流。
例如,您可以使用两个叠加过滤器为视频添加两个不同的徽标:
ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=...,overlay=' output
在您的情况下,主要输入是艺术品,水印是需要定位在单个overlay
中的叠加层。
看一下the documentation,因为有些参数可以帮助您实现目标,无论输入大小如何。查看主要和叠加输入的宽度和高度:main_w
,main_h
,overlay_w
,overlay_h
。
示例用法(从右下角10px覆盖):
overlay=main_w-overlay_w-10:main_h-overlay_h-10