ffmpeg按位置合并两个gif,下面的命令有什么错误吗?

ffmpeg -i left.gif -i right.gif -filter_complex "[0:v]format=rgb24[v0];[1:v]format=rgb24[v1];[v0]overlay=0:0[v2];[v2][v1]overlay=512:0" -y output.gif


ffmpeg version N-110495-g24f16b798e-https://www.martin-riedl.de Copyright (c) 2000-2023 the FFmpeg developers
  built with Apple clang version 14.0.0 (clang-1400.0.29.102)
  configuration: --prefix=/Volumes/ffmpeg_arm64/out --pkg-config-flags=--static --extra-version='https://www.martin-riedl.de' --enable-gray --enable-libxml2 --enable-gpl --enable-libfreetype --enable-fontconfig --enable-libbluray --enable-libsnappy --enable-libvmaf --enable-libass --enable-libklvanc --enable-libzimg --enable-libzvbi --enable-libaom --enable-libopenh264 --enable-libopenjpeg --enable-librav1e --enable-libsvtav1 --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libtheora
  libavutil      58.  7.100 / 58.  7.100
  libavcodec     60. 10.100 / 60. 10.100
  libavformat    60.  5.100 / 60.  5.100
  libavdevice    60.  2.100 / 60.  2.100
  libavfilter     9.  7.100 /  9.  7.100
  libswscale      7.  2.100 /  7.  2.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
Input #0, gif, from 'left.gif':
  Duration: 00:00:02.01, start: 0.000000, bitrate: 16706 kb/s
  Stream #0:0: Video: gif, bgra, 768x512, 7.92 fps, 8 tbr, 100 tbn
Input #1, gif, from 'right.gif':
  Duration: 00:00:02.01, start: 0.000000, bitrate: 16251 kb/s
  Stream #1:0: Video: gif, bgra, 768x512, 7.92 fps, 8 tbr, 100 tbn

报错
Cannot find a matching stream for unlabeled input pad 1 on filter Parsed_overlay_2

两个gif,按位置排列,一个在左边,一个在右边,但是报错,应该怎么写?

阅读 406
avatarAI BotBETA

从给出的错误信息来看,问题似乎在于ffmpeg不能找到匹配的流来应用第二个overlay过滤器。在这种情况下,一个可能的原因是你试图在两个输入流之间应用overlay过滤器,但它们可能并不匹配。

在你的命令中,你试图将左边的gif(left.gif)叠加到右边的gif(right.gif)上。然而,如果这两个GIF的帧数、持续时间或其他属性不匹配,ffmpeg可能无法正确地执行这个操作。

一个可能的解决方案是确保两个输入流具有相同的属性,例如帧率、持续时间和分辨率。你可以使用以下命令来检查这些属性:

ffprobe -v error -select_streams v:0 -show_entries stream=width,height,duration -of csv="p=0" left.gif
ffprobe -v error -select_streams v:0 -show_entries stream=width,height,duration -of csv="p=0" right.gif

如果这些属性不匹配,你可能需要预先处理你的GIFs以确保它们可以正确地叠加。例如,你可以使用ffmpegscale过滤器来调整输入GIF的尺寸:

ffmpeg -i left.gif -vf "scale=768:512" left_resized.gif

然后,你可以尝试使用以下命令将调整后的GIFs合并:

ffmpeg -i left_resized.gif -i right.gif -filter_complex "[0:v]format=rgb24[v0];[1:v]format=rgb24[v1];[v0]overlay=0:0[v2];[v2][v1]overlay=512:0" -y output.gif

请注意,这只是一个可能的解决方案。具体的解决方案可能会根据你的具体需求和输入GIF的具体属性而有所不同。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏