有两张图片: a.jpg 和 b.jpg 。
我只是想知道如何使用ffmpeg
将它们合并到一个图像中。
如何完成ffmpeg -i a.jpg -i b.jpg
命令以获取 c.jpg 输出图像?
这是我想要实现的一个例子:
A.JPG
B.JPG
C.JPG
答案 0 :(得分:15)
答案 1 :(得分:3)
注意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}
答案 2 :(得分:-4)