如何使用FFmpeg将两个图像合并为一个?

n2v*_*da2 7 ffmpeg tile

有两个图像:a.jpgb.jpg.

我只是想知道如何使用它们将它们连接成一个图像ffmpeg.

我应该如何完成ffmpeg -i a.jpg -i b.jpg命令以获得c.jpg输出图像?

这是我想要实现的一个例子:

  1. A.JPG

    A.JPG

  2. B.JPG

    B.JPG

  3. C.JPG

    a.jpg和b.jpg在一张图片上并排放置

llo*_*gan 18

使用hstack过滤器:

ffmpeg -i a.jpg -i b.jpg -filter_complex hstack output
Run Code Online (Sandbox Code Playgroud)

如果你想垂直堆叠使用vstack而不是.

  • 如果我们有两个具有相同 widthXheight 的文件,那么这是可行的,但是如果我们有两个具有不同 widthXheight 的图像,我们如何缩放它并连接它们? (2认同)
  • @JitendarM请参阅[使用ffmpeg垂直或水平堆叠多个视频?]中的缩放示例(/sf/answers/2363545411/) (2认同)
  • 我尝试使用这种方法来合并三个图像,但显然,我们需要将其分成两个一组。这对我来说已经足够了,但是您知道是否有办法一次合并两个以上的图像吗?编辑:刚刚在本文开头提到的线程中找到了答案 /sf/ask/808679581/​​ntally-stack-several-videos-using-ffmpeg (2认同)

Mat*_*ski 5

小心!肮脏的黑客即将来临!

\n\n

请注意LordNeckbeard 的答案,因为它比我的 hack 好得多。

\n\n
\n\n

\xc3\x81lvaro\ 的答案对我不起作用,所以我做了更多研究来解决这个问题。这是我学到的:

\n\n

我将使用以下变量。

\n\n
A_HEIGHT=458\nA_WIDTH=370\nB_HEIGHT=600\nB_WIDTH=750\nB_CROP_X=112\nB_CROP_Y=0\nA_IMAGE=a.jpg\nB_IMAGE=b.jpg\nB_IMAGE_SCALED=b-scaled.png\nB_IMAGE_CROPPED=b-cropped.png\nC_IMAGE_WITHOUT_A=c-without-a.png\nC_IMAGE=c.png\n
Run Code Online (Sandbox Code Playgroud)\n\n

规模和作物

\n\n

如果您的图像的宽度和高度不同。

\n\n

该脚本将 B 缩放为 A 的大小。

\n\n
# Scale.\nffmpeg -y -i ${B_IMAGE} -vf \\\n  scale=${A_HEIGHT}*${B_WIDTH}/${B_HEIGHT}:${A_HEIGHT} ${B_IMAGE_SCALED}\n\n# Crop.\nffmpeg -y -i ${B_IMAGE_SCALED} -vf \\\n  "crop=${A_WIDTH}:${A_HEIGHT}:${B_CROP_X}:${B_CROP_Y}" ${B_IMAGE_CROPPED}\n
Run Code Online (Sandbox Code Playgroud)\n\n

合并/连接两个图像

\n\n
ffmpeg -y -i ${B_IMAGE_CROPPED} -filter_complex tile=2x1 ${C_IMAGE_WITHOUT_A}\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在C_IMAGE_WITHOUT_A缺少A;取而代之的是黑色背景。(您应该会得到类似于下图的内容。)

\n\n

例子

\n\n

尽管如此,我还是找到了一种方法来连接这两个图像:

\n\n
ffmpeg -y -i ${C_IMAGE_WITHOUT_A} -i ${A_IMAGE} \\\n  -filter_complex overlay=${A_WIDTH}:0 ${C_IMAGE}\n
Run Code Online (Sandbox Code Playgroud)\n


Álv*_*aro -5

我认为瓷砖是你的ffmpeg命令。

您可以找到有关超级用户的更多信息

尝试:

ffmpeg -i a.jpg -i b.jpg -filter_complex scale=120:-1,tile=2x1 output.jpg
Run Code Online (Sandbox Code Playgroud)

  • 该方法对于拼接图像无效。原因如下:http://superuser.com/a/1091070/442991 (2认同)