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

如何在FFmpeg命令中实现方形图片圆角并叠加至视频

合并FFmpeg命令:为视频水印添加圆角效果

我有一个视频(videoPath)和一张方形图片(squarePath),现有FFmpeg命令可将方形图片放置在视频指定位置,输出为outputVideo:

final String[] cmd = new String[]{"-i", videoPath, "-i", squarePath, "-filter_complex", "[1:v][0:v]scale2ref=(300/300)*175:175[wm][base];[base][wm]overlay=(main_w-overlay_w)/2:(343)", "-pix_fmt", "yuv420p", "-c:a", "copy", "-y", outputVideo};

int res = FFmpeg.execute(cmd);

希望在同一条命令中为方形图片添加圆角效果,已找到单独实现圆角的代码,但不知道如何合并:

ffmpeg -i avatar.png -i mask.png -filter_complex [0]scale=400:400[ava];[1]alphaextract[alfa];[ava][alfa]alphamerge output.png

完全可以合并,只需把圆角处理逻辑整合到原命令的滤镜链中,同时添加圆角遮罩图作为第三个输入。

合并后的命令代码

final String[] cmd = new String[]{
    "-i", videoPath,
    "-i", squarePath,
    "-i", maskPath, // 新增圆角遮罩图作为第三个输入
    "-filter_complex",
    "[1:v][0:v]scale2ref=(300/300)*175:175[wm_raw][base];[2:v]scale=175:175,alphaextract[alfa];[wm_raw][alfa]alphamerge[wm];[base][wm]overlay=(main_w-overlay_w)/2:(343)",
    "-pix_fmt", "yuv420p",
    "-c:a", "copy",
    "-y", outputVideo
};

int res = FFmpeg.execute(cmd);

关键步骤说明

  • 新增遮罩输入:把圆角遮罩图(maskPath)作为第三个输入源(索引为2:v)
  • 缩放并提取遮罩alpha通道:先将遮罩图缩放到和水印图片一致的尺寸(175x175),再提取它的alpha通道作为圆角蒙版
  • 合并水印与蒙版:将缩放后的原始水印图(wm_raw)和alpha蒙版(alfa)合并,生成带圆角的水印(wm)
  • 保持原overlay逻辑:最后按原命令的位置参数,把带圆角的水印叠加到视频上

注意事项

  • 遮罩图尺寸必须和最终水印尺寸一致(这里是175x175),否则alphamerge会失败;如果遮罩尺寸不符,必须通过scale滤镜统一尺寸
  • 遮罩图建议用黑色背景+白色圆角路径的PNG图,提取alpha后才能生成正确的圆角透明效果

内容的提问来源于stack exchange,提问作者Erez git

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 04:24:11