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

如何修改FFmpeg命令实现叠加图像绕自身中心旋转且位置正确?

问题描述

我正在用FFmpeg对视频做图像缩放、旋转及叠加操作,能将图像旋转到指定角度,但叠加后的位置在垂直和水平方向都偏离了预期。

以下是我试过的命令及对应输出,命令1能得到预期效果,命令2和3无法实现。请问如何通用地修改命令,使叠加图像围绕自身中心旋转以得到预期输出?

命令及效果

命令1(正常效果)

命令1效果

ffmpeg -i graphpaper.mp4 -i arrow.png -y -filter_complex [1:v]scale=w=364:h=370[overlay0];[overlay0]rotate=a=0:c=none:ow=rotw(0):oh=roth(0)[rotate0];[0:v][rotate0]overlay=x=419:y=168[output0] -map [output0] sample-overlay-on-graph-paper.mp4

命令2(位置偏离)

命令2效果

ffmpeg -i graphpaper.mp4 -i arrow.png -y -filter_complex [1:v]scale=w=364:h=370[overlay0];[overlay0]rotate=a=0.8017360589297406:c=none:ow=rotw(0.8017360589297406):oh=roth(0.8017360589297406)[rotate0];[0:v][rotate0]overlay=x=419:y=168[output0] -map [output0] sample-overlay-on-graph-paper.mp4

命令3(位置偏离)

命令3效果

ffmpeg -i graphpaper.mp4 -i arrow.png -y -filter_complex [1:v]scale=w=364:h=370[overlay0];[overlay0]rotate=a=5.493783719179012:c=none:ow=rotw(5.493783719179012):oh=roth(5.493783719179012)[rotate0];[0:v][rotate0]overlay=x=419:y=168[output0] -map [output0] sample-overlay-on-graph-paper.mp4

输入文件:

  • graphpaper.mp4(网格视频)
  • arrow.png(箭头图片)

解决方案

问题核心是:旋转后图像的画布尺寸会扩大以容纳旋转后的图像,但你仍用原图像的锚点位置叠加,导致中心偏移。

通用修改思路:计算旋转后画布与原图像的尺寸差,用目标叠加位置减去这个差值的一半,让图像中心对齐到预期坐标。

通用命令模板

ffmpeg -i graphpaper.mp4 -i arrow.png -y -filter_complex \
"[1:v]scale=w=364:h=370[scaled]; \
[scaled]rotate=a=旋转弧度:c=none:ow=rotw(旋转弧度):oh=roth(旋转弧度)[rotated]; \
[0:v][rotated]overlay=x=419-(rotw(旋转弧度)-364)/2:y=168-(roth(旋转弧度)-370)/2[output]" \
-map [output] sample-overlay-on-graph-paper.mp4

命令2修改示例

ffmpeg -i graphpaper.mp4 -i arrow.png -y -filter_complex \
"[1:v]scale=w=364:h=370[scaled]; \
[scaled]rotate=a=0.8017360589297406:c=none:ow=rotw(0.8017360589297406):oh=roth(0.8017360589297406)[rotated]; \
[0:v][rotated]overlay=x=419-(rotw(0.8017360589297406)-364)/2:y=168-(roth(0.8017360589297406)-370)/2[output]" \
-map [output] sample-overlay-on-graph-paper.mp4

原理说明

  • rotw(旋转弧度)/roth(旋转弧度):自动计算旋转后画布的宽高
  • (rotw(旋转弧度)-364)/2:旋转后图像在新画布中水平偏移的一半,用目标x坐标减去这个值,确保图像中心对齐预期x位置
  • (roth(旋转弧度)-370)/2:同理修正垂直方向的偏移

无论旋转多少角度,按此修改后,叠加图像都会围绕自身中心对齐到你设定的x=419,y=168位置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:57:17