如何使用FFmpeg将两个图像合并为一个? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用FFmpeg将两个图像合并为一个? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

有两个图像:a.jpg和b.jpg。

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

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

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

  1. 呵呵。 JPG
  2. 湾JPG
  3. s.zhpg
答案

我认为tile是你的ffmpeg命令。

你可以在超级用户上找到更多info

尝试:

ffmpeg -i a.jpg -i b.jpg -filter_complex scale=120:-1,tile=2x1 output.jpg
另一答案

使用hstack过滤器:

ffmpeg -i a.jpg -i b.jpg -filter_complex hstack output

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

另一答案

Watch out! Dirty hacks ahead!

注意LordNeckbeard's answer因为它比我的黑客要好得多。


Álvaro's answer不适合我,所以我做了更多的研究来解决这个问题。这就是我所学到的:

我将使用以下变量。

A_HEIGHT=458
A_WIDTH=370
B_HEIGHT=600
B_WIDTH=750
B_CROP_X=112
B_CROP_Y=0
A_IMAGE=a.jpg
B_IMAGE=b.jpg
B_IMAGE_SCALED=b-scaled.png
B_IMAGE_CROPPED=b-cropped.png
C_IMAGE_WITHOUT_A=c-without-a.png
C_IMAGE=c.png

规模和作物

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

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

# Scale.
ffmpeg -y -i ${B_IMAGE} -vf \
  scale=${A_HEIGHT}*${B_WIDTH}/${B_HEIGHT}:${A_HEIGHT} ${B_IMAGE_SCALED}

# Crop.
ffmpeg -y -i ${B_IMAGE_SCALED} -vf \
  "crop=${A_WIDTH}:${A_HEIGHT}:${B_CROP_X}:${B_CROP_Y}" ${B_IMAGE_CROPPED}

合并/加入两个图像

ffmpeg -y -i ${B_IMAGE_CROPPED} -filter_complex tile=2x1 ${C_IMAGE_WITHOUT_A}

现在C_IMAGE_WITHOUT_A缺少A;而是有一个黑色的背景。 (你应该得到类似下图的东西。)

我找到了一种方法来加入这两个图像:

ffmpeg -y -i ${C_IMAGE_WITHOUT_A} -i ${A_IMAGE} \
  -filter_complex overlay=${A_WIDTH}:0 ${C_IMAGE}

以上是关于如何使用FFmpeg将两个图像合并为一个? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ffmpeg 合并两个 avi 文件?

如何在ffmpeg中合并音频和两个视频文件?

如何在 ffmpeg 中合并两个输入 rtp 流?

如何将多个 YouTube 视频合并为一个

如何使用 ffmpeg 合并两个视频?

使用 ffmpeg 将图像转换为视频