Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video FFMPEG结合图像、mp3和徽标水印_Video_Ffmpeg_Mp3_Mp4 - Fatal编程技术网

Video FFMPEG结合图像、mp3和徽标水印

Video FFMPEG结合图像、mp3和徽标水印,video,ffmpeg,mp3,mp4,Video,Ffmpeg,Mp3,Mp4,我原以为这样行得通,但现在我犯了错误 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.

我原以为这样行得通,但现在我犯了错误

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”部分(将艺术品放在“中间”)它可以工作,但艺术品不居中(它是480x480 jpeg)

我得到的错误是

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

这与有两个过滤器复杂部件有关,但两者都是必需的,因此不确定如何“标记”它们?

更新:OP想要实现的是能够定位两个覆盖。在这种情况下,最明显的答案是使用第三个输入作为主输入,例如黑框:

 ffmpeg -f lavfi -i color=black:800x600 -i <image1> -i <image2> -i <audio> -filter_complex 'overlay=...,overlay=' <output>
在您的案例中,主要输入是艺术品,水印是需要放置在单个
覆盖中的覆盖

请看一看,因为无论输入大小如何,都有一些参数可以帮助您实现目标。请参阅主输入和覆盖输入宽度和高度:
main\u w
main\u h
overlay\u w
overlay\u h

用法示例(从右下角以10px的速度覆盖):


overlay=main\u w-overlay\u w-10:main\u h-overlay\u h-10

当然,您需要显示完整的控制台输出,而不仅仅是其中的一行。@LordNeckbeard和完整的控制台输出应始终以“我,以下签字人特此证明并以我的名誉声明,我已事先阅读了文件”开头:)通过google找到此页面,搜索词为
ffmpeg无法找到未标记输入板的匹配流。我的问题是我忘记了
-I
标志。其中一个愚蠢的错误,你总是忽略,因为“嘿,我不是那么无能”。这并不能回答我的任何问题。。。就像我说的,如果我不尝试定位第二个覆盖(水印),效果很好。在filter_complex中添加两个以逗号分隔的覆盖会产生与以前相同的错误。那么,如果没有标签错误,我如何将JPG和GIF定位到x,y坐标?@b747fp是的,请再次阅读我的答案。您不能使用两个覆盖,因为您只有两个输入(音频不计算,因为您不能在音频流上覆盖图像)。您可以将jpg覆盖在gif上,也可以将gif覆盖在jpg上,只需一个覆盖即可。逗号分隔的覆盖是视频输入的一个示例,其中在1个视频流=3个输入上覆盖2个图像。你只有2个。这个命令有效,但我需要将艺术品放置在距离左侧80像素的位置。ffmpeg-loop 1-i“ARTWORK.jpg”-i“MUSIC.mp3”-i“WATERMARK.gif”-filter_complex“overlay=80:00”-s 640x480-shortest-vcodec libx264-acodec aac-strict experiative-movflags faststart“CONVERTED.mp4”艺术品是主要输入,而不是覆盖。
overlay
控制第二幅图像的位置,在您的例子中是水印。如果希望
覆盖
影响艺术品位置,请首先在命令中放置水印。清楚吗,因为我还能画漂亮的图表:)?
ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=...,overlay=' output