将大图像叠加到像 snapchat 这样的小视频上

Overlaying a large image onto a small video like snapchat

我想在不同尺寸的视频上添加全屏叠加图像, 我使用 ffmpeg 如果覆盖和视频具有相同的比例(相同的宽度和高度),它工作正常。 如果视频的高度和宽度尺寸小于叠加图像,叠加图像会被压缩,但我想像快照聊天视频一样应用它们在顶部和底部添加黑色视图

ffmpeg 命令是

String[]{"-y", "-i", filePath, "-i",
            overlayPath,
            "-preset", "ultrafast",
            "-filter_complex",
            "[1][0]scale2ref[i][m];[m][i]overlay[v]", "-map",
            "[v]", "-map", "0:a?", "-ac", "2", output};

我想要以下输出 link 如下所述。

Snapchat output

My editing result output

您可以传递输出视频的宽度和高度。 如果视频高度较小,可以使用 pad 属性在视频中添加黑色区域

ffmpeg -i intro-blur.mp4 -i 3.jpg -filter_complex "[0]scale=720:1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2,setsar=1[backd],[backd][1]overlay" out_intro_blur.mp4

您可以像 "scale=1439x2559" 一样缩放叠加图像,此处可以通过“[1]”访问叠加图像,如果您想缩放叠加图像,您可以使用 [1]scale=1439x2559[scaled_image ] 之后你可以使用 [scaled_image] 叠加在视频上。

下面的例子

ffmpeg -i intro-blur.mp4 -i 3.jpg -filter_complex "[0]scale=720:1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2,setsar=1[backd],[1]scale=1439x2559[scaled_image],[backd][scaled_image]overlay" out_intro_blur.mp4