You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg实现Snapchat式全屏图片覆叠(适配不同分辨率视频)

实现FFmpeg全屏覆叠图的Snapchat式黑边适配效果

我懂你想要的效果——让视频自动添加黑边来适配覆叠图的比例,而不是把覆叠图挤压变形。你当前的命令是把覆叠图缩放到视频的尺寸,这就导致了比例不匹配时的拉伸问题。下面是调整后的解决方案,完美实现你要的Snapchat风格效果:

修改后的FFmpeg命令

String[]{"-y", "-i", filePath, "-i", overlayPath, "-preset", "ultrafast", "-filter_complex", "[0][1]scale2ref=w='min(ow, ih*dar)':h='min(oh, iw/dar)':force_original_aspect_ratio=decrease[v_scaled][overlay];[v_scaled]pad=w=ow:h=oh:x=(ow-iw)/2:y=(oh-ih)/2[v_padded];[v_padded][overlay]overlay[v]", "-map", "[v]", "-map", "0:a?", "-ac", "2", output};

命令详解

咱们拆解一下每个部分的作用,让你明白为什么这么改:

  • [0][1]scale2ref=...:这一步是让视频(流0)参照覆叠图(流1)的尺寸进行缩放。min(ow, ih*dar)和min(oh, iw/dar)保证视频只缩小不放大,同时严格保持自身的原始比例,不会被拉伸。force_original_aspect_ratio=decrease进一步确保视频不会因为强制适配而变形。
  • pad=w=ow:h=oh:...:缩放后的视频尺寸会比覆叠图小,这一步就给视频添加黑边,把整个画面填充到覆叠图的尺寸,而且视频会自动居中显示——如果视频比例比覆叠图宽,就左右加黑边;如果视频更窄,就上下加黑边,完全贴合Snapchat的效果。
  • [v_padded][overlay]overlay[v]:最后把覆叠图直接覆盖到加了黑边的视频上,因为两者尺寸完全一致,覆叠图会全屏显示,而且保持自己的原始比例,再也不会变形了。

和原命令的区别

你原来的命令[1][0]scale2ref[i][m];[m][i]overlay[v]是把覆叠图缩放到视频的尺寸,相当于让覆叠图去适配视频,自然会比例失调。新命令反过来,让视频适配覆叠图的比例,通过黑边填补空隙,覆叠图保持原样,这才是你要的效果。

内容的提问来源于stack exchange,提问作者Tabassum Latif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:23:29