求助:如何正确展开监控360度视频?FFmpeg及HandBrake尝试失败问题
求助:如何正确展开监控360度视频?FFmpeg及HandBrake尝试失败问题
嘿,我来帮你捋捋这个360视频展开的问题!先拆解你遇到的几个错误,再给你针对性的解决方案:
先分析你遇到的FFmpeg错误
第一个错误:height not divisible by 2 (3840x3413)
这个问题本质很简单——你用的libx264编码器(H.264标准)要求视频的宽、高必须是偶数,而你用v360=eac:e转换后输出的高度是3413(奇数),直接触发了编码器的参数校验错误。第二个错误:Option not found 'output_width'
你用的output_width、output_height这些参数根本不是v360滤镜的合法选项!v360滤镜指定输出分辨率的参数是w和h,而且output_format也不属于这个滤镜的设置项,要调整像素格式得用全局参数-pix_fmt。
正确的FFmpeg解决方案
首先得确认你的输入视频是哪种360投影格式:从你尝试用eac作为输入参数,加上视频分辨率是3840x3840来看,大概率是等角立方体贴图(EAC);如果是监控常用的双镜头拼接360,那可能是双鱼眼(Dual Fisheye)。下面给你两种情况的具体命令:
情况1:输入是等角立方体贴图(EAC)
直接指定输出为平面视频,同时设置偶数分辨率规避编码报错:
ffmpeg -i Stationnement.mp4 -vf "v360=eac:flat:w=3840:h=2160" -c:v libx264 -crf 17 Stationnement_Output.mp4
v360=eac:flat:明确输入是EAC格式,输出为平面展开的常规视频w=3840:h=2160:设置16:9的标准偶数分辨率,完美适配H.264编码要求-crf 17:和原视频的画质参数保持一致,确保输出画质不缩水
情况2:输入是双鱼眼(Dual Fisheye)
如果你的监控是双镜头拼接的360视频,只需要把输入格式改成dfisheye:
ffmpeg -i Stationnement.mp4 -vf "v360=dfisheye:flat:w=3840:h=2160" -c:v libx264 -crf 17 Stationnement_Output.mp4
要是你不确定输入的投影格式,可以用这条命令查看视频元数据(如果有360相关标记的话):
ffprobe -v quiet -print_format json -show_streams -show_format Stationnement.mp4
HandBrake的解决方法
你之前用sphere预设没用,是因为没正确配置投影转换逻辑:
- 打开HandBrake导入你的视频
- 切换到「视频」选项卡,找到「滤镜」板块
- 选择「360 Video」滤镜,然后:
- 「输入投影」选择对应的格式(EAC或双鱼眼)
- 「输出投影」选择「平面(Flat)」
- 在「尺寸」选项里设置输出分辨率为偶数(比如3840x2160)
- 最后点击「开始编码」即可
备注:内容来源于stack exchange,提问作者guillaume tremblay
相关产品推荐
相关产品推荐

