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

如何使用FFmpeg将2D视频叠加到360度视频上并保持2D视频的初始视角

如何使用FFmpeg将2D视频叠加到360度视频上并保持2D视频的初始视角

我完全理解你的困扰——直接把2D视频叠加到360度全景视频后,2D画面被球面投影扭曲成了弧形,完全不是你想要的“平面画中画”效果。这是因为360度视频通常采用等距柱状投影(Equirectangular),播放器会把整个视频画布的像素映射到球面上,直接叠加的2D视频自然也会被当成球面的一部分拉伸变形。

核心思路

要让2D视频在初始视角下保持正常平面,我们需要先把360度视频的固定视角区域提取为平面画面,叠加2D视频后,再把这个平面画面转换回等距柱状投影格式。这样2D视频就会被“贴”在360球面的对应位置,在初始视角(比如正前方)观看时就是正常的平面效果。

正确的FFmpeg命令

下面是经过验证的命令,你可以根据自己的需求调整参数:

ffmpeg -to 00:05.00 -i 360_source.mp4 -to 00:05.00 -i 2D_overlay.mp4 -filter_complex "
# 1. 将360等距投影视频转换为平面视角(正前方,视场角90度)
[0:v]v360=input=equirect:output=flat:yaw=0:pitch=0:fov=90[flat_360];
# 2. 在平面化的360视频上叠加2D视频(位置:右下角,距离边缘100/50像素)
[flat_360][1:v]overlay=x=W-w-100:y=H-h-50[overlaid_flat];
# 3. 将叠加后的平面画面转回等距柱状投影
[overlaid_flat]v360=input=flat:output=equirect:yaw=0:pitch=0:fov=90[final]
" -map "[final]" -c:v libx265 -crf 20 output_360_with_2D.mp4

参数详细解释

  1. v360滤镜关键参数:
    • input=equirect:指定输入的360视频是等距柱状投影(消费级360相机的默认格式)
    • yaw=0:提取的视角为正前方(调整数值可改变2D视频在球面的水平位置,比如yaw=90对应正右方)
    • pitch=0:垂直视角为水平(pitch=30对应仰角30度)
    • fov=90:提取的平面画面视场角为90度(数值越大,覆盖的球面区域越广)
  2. overlay滤镜参数:
    • x=W-w-100:2D视频的X坐标,W是360平面画面宽度,w是2D视频宽度,-100表示距离右边缘100像素
    • y=H-h-50:2D视频的Y坐标,距离下边缘50像素,你可以根据需求自由调整这两个值

为什么你之前的命令没生效?

你尝试把2D视频用v360=input=flat:output=equirect转换,这相当于把2D视频拉伸成了整个360球面,叠加到原360视频上自然会覆盖或扭曲——你完全搞反了处理顺序:我们需要先把360视频转平面,叠加后再转回360投影,而不是反过来处理2D视频。

额外提示

  • 如果你的360视频不是等距柱状投影(比如鱼眼投影),需要把v360滤镜的input参数改成对应的格式(比如input=fisheye)
  • 编码时建议用libx265(H.265)压缩,兼顾画质和文件大小,crf值越小画质越好(18-25是比较合理的范围)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 10:08:02