【问题标题】:FFMPEG combining image, mp3, and logo watermarkFFMPEG 组合图像、mp3 和徽标水印
【发布时间】:2015-09-19 20:18:35
【问题描述】:

我认为这会起作用,但我遇到了错误。

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

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

【问题讨论】:

  • 当然,您需要显示完整控制台输出,而不仅仅是其中的一行。
  • @LordNeckbeard 和完整的控制台输出应始终以“我,签名人特此证明并声明我事先阅读了文档”:)
  • 通过 google 找到此页面,搜索词为 ffmpeg Cannot find a matching stream for unlabeled input pad。我的问题是我忘记了-i 标志。您经常忽略的愚蠢错误之一,因为“嘿,我不是那么无能”。

标签: video ffmpeg mp3 mp4


【解决方案1】:

更新: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_wmain_hoverlay_woverlay_h

使用示例(距离右下角 10 像素的叠加层):

overlay=main_w-overlay_w-10:main_h-overlay_h-10

【讨论】:

  • 这并不能回答我的任何问题...就像我说的,如果我不尝试定位第二个叠加层(水印),它就可以正常工作。在 filter_complex 中添加用逗号分隔的两个覆盖会给我和以前一样的错误。那么如何将 JPG 和 GIF 都定位到 x,y 坐标而不出现标签错误?
  • @b747fp 是的,请再次阅读我的答案。您不能使用两个叠加层,因为您只有两个输入(音频不计算在内,因为您无法在音频流上叠加图像)。您可以在 gif 上叠加 jpg 或在 jpg 上叠加 single 的 gif。
  • 逗号分隔的叠加是 视频输入的示例,您可以在 1 个视频流 = 3 个输入上叠加 2 个图像。你只有 2 个。
  • 此命令有效,但我需要将 ARTWORK 放置在距左侧 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 experimental -movflags快速启动“CONVERTED.mp4”
  • 艺术作品是主要输入,而不是覆盖。 overlay 控制第二个图像的位置,在您的情况下是 WATERMARK。如果您希望 overlay 影响 ARTWORK 位置,请将 WATERMARK 首先放在您的命令中。清楚吗,因为我也可以画漂亮的图表:)?
猜你喜欢
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2012-07-26
相关资源
最近更新 更多