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

FFmpeg叠加层旋转时如何保留指定位置且避免内容裁剪

FFmpeg叠加层旋转时如何保留指定位置且避免内容裁剪

嗨,我来帮你解决这个FFmpeg旋转叠加的问题~

你遇到的情况其实是FFmpeg旋转滤镜的常见特性:当你加上ow=rotw(1):oh=roth(1)时,FFmpeg会创建足够大的画布来容纳旋转后的完整图像,但新画布的左上角原点和原图像原点不一致,导致叠加位置偏移;而去掉这两个参数的话,画布还是原图像的500x500大小,旋转后超出画布的部分自然就被裁剪了。

要同时实现保留完整旋转图像和维持你指定的叠加位置,核心思路是:先让旋转后的图像拥有完整画布,再通过计算偏移量修正叠加坐标,让旋转后的图像中心和你原本想要的位置对齐。

这里是调整后的命令:

String command = '-y -i $backgroundImage1 -i $overlayImage1 -filter_complex '
'"[1]scale=500:500,rotate=1:c=none:ow=rotw(1):oh=roth(1)[i1];'
'[0][i1]overlay=600-(rotw(1)-500)/2:600-(roth(1)-500)/2" $outPutPath';

咱们来拆解下这个调整逻辑:

  • rotw(1)-500:算出旋转后画布比原500x500宽出的总宽度,除以2就是画布左侧多出来的距离;同理roth(1)-500是高度方向多出的部分。
  • 用你原本指定的600:600分别减去这两个偏移值,就能让旋转后的图像中心和你最初想要的位置完全对齐——既不会因画布变大导致位置偏移,又能完整显示旋转后的所有内容,不会裁剪。

这个方法适用于任何旋转角度,因为rotw()和roth()会自动根据你设置的角度计算对应画布大小,偏移量的计算逻辑是通用的。

备注:内容来源于stack exchange,提问作者Yousuf Essa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:20:26