video - 使用 FFmpeg v360 过滤器对 180 个 VR 素材进行变形
问题描述
我目前正在苦苦挣扎。我已经搜索了好几天,找不到一个可以实现我们想要做的命令。
我们有立体 180 度的 VR 素材,采用并排的 equirectangular 格式,我们希望将其转换为平面格式,以便我们可以使用进一步的 AI 软件进行处理。
我们已经使用 FFmpeg 将文件在宽度上分成两半,因此我们有一个“右”眼和一个“左”眼视频文件。
对于每个视频文件,我们需要使用 FFmpeg(和 v360 过滤器)将 180 度 equirectangular 素材转换为平坦的、未变形的视频文件。
例如,我们尝试了以下方法:
ffmpeg -i 2LEFT.mp4 -vf "v360=input=equirect:ih_fov=180:iv_fov=180:output=flat" 2LEFTTEST.mp4
但是,这会导致视频非常扭曲/错位。
将不胜感激一些关于将现在的单视场 180 度 equirectangular 素材转换为平面视频文件的命令示例、提示和建议。
提前谢谢你的帮助。
解决方案
我最近遇到了类似的问题。这是解决方案:如果您的视频已经分成左右视图,只需使用:
ffmpeg -i 2LEFT.mp4 -vf "v360=input=hequirect:output=flat" 2LEFTTEST.mp4
这与您尝试在一种投影中使用的命令不同。通常 VR180 对每只眼睛使用半等距投影。
就个人而言,我建议 YouTube 视频设置输出视野和分辨率:
ffmpeg -i 2LEFT.mp4 -vf "v360=input=hequirect:output=flat:h_fov=100:v_fov=67.5:w=1280:h=720" 2LEFTTEST.mp4
最后,使用 filter_complex,您可以在一个命令中立即将视频剪切为左右视图,如果您愿意:
ffmpeg -i 2.mp4 -filter_complex "[0:v]v360=input=hequirect:output=flat:h_fov=100:v_fov=67.5:in_stereo=sbs:out_stereo=sbs:w=1280:h=720[flat];[flat]split[left][right];[left]stereo3d=sbsl:ml[left_mono];[right]stereo3d=sbsl:mr[right_mono]" -map [left_mono] 2LEFTTEST.mp4 -map [right_mono] 2RIGHTTEST.mp4
推荐阅读
- python - 将带有 unicode 字符的“属性”类型(来自 python 2.7 ldap3 包)插入 MySQL db
- python - eviews 和 Python 中的移动平均线
- matlab - 与可变限制集成,任何函数为输入
- r - 在 R 中更改分类值的默认绘图颜色
- javascript - NestJS 在非模块文件中注入模块服务
- docker - standard_init_linux.go:211: exec 用户进程导致“没有这样的文件或目录”
- sql - 如何将过滤器添加到连接表
- javascript - Mapbox-gl-leaflet:mapbox 事件不会触发
- angular - 一旦所有http调用以角度完成后计算总数
- android - 如何在 android studio 项目中添加 mp3 文件?