一种3D视频格式转换(H264 MVC至SBS / OU)方案

2023-11-08

本文尚处于草稿状态,提前公开仅供预览。

前言
两年前我就想写这个话题的文章,但一直拖延到现在,因为我在等待SkyBox VR Player支持3D MVC。我在想:如果3D播放器已经支持播放3D MVC格式,那么MVC至SBS转换就没有必要,毕竟转换耗时几乎与视频时长相当(采用2019年消费级数一数二的CPU/GPU/SSD)。

关于 H.264 MVC, Full-SBS, Half-SBS, Full-OU, Hasf-OU, Stereoscopic等关键词,请参考维基百科中相关条目。

背景

如果你有一个VR头显(例如Oculus Rift, Valve),那么为了看3D视频你可能会为3D片源而发愁,你能在网络上找到的大都是1080P Half-SBS格式。即使你有3D蓝光片源,也难以通过VR头显观看,因为3D蓝光视频采用H.264 MVC编码,而目前(时至2022年)没有VR视频播放器支持3D MVC编码。Half-SBS格式本身没毛病,问题是有时手头只有3D蓝光原盘,怎么把它转成Full-SBS(3840x1080)或Full-OU(1920x2160)以通过VR头显观看,一来是为更高的分辨率/清晰度,二来是为当他人没提供现成的Hasf-SBS时自己动手制作。

当初SkyBox VR Player开发团队有人在论坛中提到会考虑支持H.264 MVC,后来他改变了主意,论坛话题被重启。
以下是我从之前话题中摘录的内容:
请添加图片描述
看那些答复的走势,我认为MVC支持没戏了,至少在短期内。既然如此,这篇文章就有一定的存在价值,至少在短期内。

概述

本文介绍如何使用系列软硬件对3D MVC编码的蓝光视频进行Rip,Split,Encode,Merge,最终得到3D Full-SBS或Full-OU格式,以便在VR头显上观看。

系统要求

硬件:

  • GPU:要求具备视频编码硬件加速能力(视频编码加速技术如Intel QSV,NVIDIA NVENC或AMD AMF)
  • CPU:工作站级,要求散热良好(至少能稳定地承受连续半小时CPU满载负荷)
  • SSD:要求可用存储空间至少为3倍于片源大小
  • 【可选】BD Drive: 当片源载体是3D蓝光碟时需要用到BD驱动器,可以是USB转SATA的

操作系统:

  • Windows 10 或以上

软件:

  • MakeMKV - 抓取BD光盘、BD镜像,提取音视频轨道
  • MKVToolNix - 分离音频频轨道,合并音视频轨道
  • FRIM MVC Decoder - 3D MVC解码
  • FFmpeg

操作

H.264 MVC转SBS的大致可分为4步:1). Rip 2). Split,3). Transcode 4). Merge 流程如下:

Blu-ray 3D(MVC) to VR 3D(SBS_OU)
该转换流程是半自动的,其中梯形代表手动操作。手动操作可能是为了衔接步骤,也可能是为了纠错,或者调整参数。我考虑过使用流程编排框架将其整合,但还没找到合适的框架。

Rip

工具:MakeMKV
此处介绍如何Rip BD光盘或BD ISO镜像

Split

工具:MKVToolNix
此处介绍如何使用MKVToolNix从MKV文件中分离出所需的音频轨道、视频轨道、字幕轨道、封面图、章节

Transcode

工具:FRIM MVC Decoder, FFmpeg, SubEdit
此处介绍解码FRIM MVC Decoder解码MVC数据,并输出给FFmpeg重新压缩成H264 SBS;另外介绍如何使用OCR引擎将PGS图片字幕装成SRT文本字幕

Merge

工具:MKVToolNix
此处介绍如何将若干条多媒体轨道数据混合成一个MKV文件

附录

参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一种3D视频格式转换(H264 MVC至SBS / OU)方案 的相关文章

  • Java/LWJGL:OpenGL 中的 Z 轴表现得像左手坐标系

    最近 我寻求帮助 https stackoverflow com q 18836484 1530508关于 OpenGL 中的 3D 相机旋转 这个答案 https stackoverflow com a 18836618 1530508接
  • Python在3D散点图中用线连接相邻点

    我有两组 x y z 坐标 我用 Matplotlib 将它们绘制在 3D 散点图中 现在 我想将每个生成的四边形与平面连接起来 我已经了解了如何在 3D 空间中绘制 2D 多边形在 python matplotlib 中绘制 3D 多边形
  • 如何在 MATLAB 中可视化如图所示的体积数据?

    我的问题非常简单 我有一堆矩阵 所有矩阵都相互堆叠起来 这样我就有了大量的数据 我想可视化这些数据 如下图所示 在我看来 需要一定程度的透明度 这可能与每个体素的值有关 也就是说 值越高 体素对其后面的事物越不 透明 我不知道如何开始 这是
  • 如何使用 OpenCV Viz 和 ARUCO 转换增强现实应用的 3D 模型

    我正在开发一个简单的基于标记的增强现实应用程序OpenCV 可视化 and ARUCO 我只想在标记上可视化 3D 对象 PLY 格式 我可以使用 ARUCO 毫无问题地运行标记检测和姿态估计 返回旋转和平移向量 我可以在 Viz 窗口中可
  • 实现3d索贝尔算子

    我目前正在研究从包含体素的 MRI 数据量中去除不均匀性 我想在这些体积上应用索贝尔运算符来找到梯度 我熟悉二维索贝尔掩模和二维图像的邻域 索贝尔面具 1 2 1 0 0 0 1 2 1 1 0 1 2 0 2 1 0 1 x y 的邻域
  • 使用相机将 3D 透视投影到 2D 屏幕上的基本渲染(无需 opengl)

    假设我有一个如下的数据结构 Camera double x y z ideally the camera angle is positioned to aim at the 0 0 0 point double angleX angleY
  • 使用鼠标光标捕获屏幕截图

    我使用以下代码在 Windows 上获取屏幕截图 hdcMem CreateCompatibleDC hdc int cx GetDeviceCaps hdc HORZRES int cy GetDeviceCaps hdc VERTRES
  • 求 3d 中 2 个任意立方体的交集

    所以 我想找出一个函数 可以让您确定两个任意旋转和大小的立方体是否相交 如果立方体的旋转不是任意的 而是锁定到特定的轴 则相交很简单 您可以通过检查它们的边界来检查它们是否在所有三个维度上相交 以查看它们在所有三个维度上是否相交或在彼此之内
  • 将球体上的 3d 点转换为 UV 坐标

    我在球体上有一个 3d 点 想要将其转换为球体纹理上的 UV 点 有人可以指出正确的方向吗 我可以采用纯数学解决方案 Edit 我目前有这个 它不会返回正确的 UV 坐标 p 是球体上的 3d 点 mesh position 是球体的位置
  • DirectX Release 构建可以通过 VS2010 运行,但不能运行 exe

    我已经通过 Google 访问 Stack Overflow 几年了 但到目前为止还没有询问 回答任何问题 所以就到这里吧 基本上 我有一个在 DirectX 11 中设置绘图模型和地形的 3D 渲染框架 一切正常 通过 Visual St
  • 给定 3D 空间中的一条线,如何找到从它到一点的角度?

    我在 3D 空间中有两组点 我想画一条穿过两组点的中心的线 然后找到从该线到每个点的角度 从那里开始 我将根据两个角度的接近程度来确定两组中的匹配点 我知道如何找到每组点的中心 只需将它们平均在一起 并且我知道如何将它们匹配 甚至考虑到它们
  • 对一系列点重新采样

    我有一个 3d 点数组 想象一下球的轨迹 有 X 个样本 现在 我想对这些点重新采样 以便我有一个新数组 其中包含 y 个样本的位置 y 可以大于或小于 x 但不能小于 1 始终至少有 1 个样本 将原始数组重新采样为新数组的算法会是什么样
  • WPF 3D 旋转球体 GUI

    我一直在尝试在 WPF 中为我的课堂作业制作 3D 用户界面 但遇到了一个问题 现在 2 3 天都无法解决 我尝试用谷歌搜索答案 我查看了一些 stackoverflow 帖子 但还没有一个可以帮助我解决问题 情况是这样的 我有一个 3D
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考
  • 3D 空间:使用鼠标指针沿着对象指向的方向

    给定相机面向的方向的 3D 向量以及 3D 空间中 3D 对象的方位 方向向量 如何计算鼠标指针在屏幕上必须遵循的 2 维斜率 以便在视觉上沿着所述物体的方向移动 基本上 我希望能够单击箭头并通过拖动它来使其前后移动 但前提是鼠标指针沿着箭
  • OpenGL Z 偏置(多边形偏移)限制

    我有两个共面的多边形 我尝试做 glEnable GL POLYGON OFFSET FILL glPolygonOffset 0 1 并期望其中一个明显 位于 另一个之上 这种情况直到大约 70 75 个单位之外 近剪裁平面为 1 远剪裁
  • 在 Three.js 中将贝塞尔曲线转换为平面道路

    我试图根据之前计算得到的一些贝塞尔曲线在 Three js 中绘制一条弯曲的道路 问题是我找不到转换曲线序列的方法 一条从上一条曲线的末尾开始 到一个曲面 我有一个 3D 场景 其中有一些汽车 一条用飞机创建的道路 并且绘制了即将到来的道路
  • 颜色重新映射 - 使用 3D 网格匹配目标调色板?

    假设我有颜色 FOO 它以 RGB 格式存储 我需要重新着色 FOO 以便它与颜色列表中最接近的颜色匹配 即时执行此操作 我是否无法将每种颜色的 RGB 值视为 3D 网格上的点 r x g y b z 并计算点 FOO 与每个颜色点之间的
  • 简单的线框格式?

    我正在寻找一种用于线框模型的简单文件格式 我知道 VRML u3D 等 但这些对于我的需求来说似乎很重要 我的标准是 必须有明确的规格 要么是开放的 要么是非常完善 记录的 我只需要 想要 简单的模型 顶点和边 我不想处理面孔或物体 如果格
  • 如何知道一个点是否在复杂的 3D 形状内(.ply 文件)

    我正在研究一个Java女巫项目真是要了我的命 经过几天在不同论坛上的研究 寻找我真正需要的东西 我来寻求你的帮助 我的数据 ply 文件 包含由许多三角形组成的 3D 形状 一个点 3D坐标 我想知道这个点是否包含在复杂的 3D 形状内 我

随机推荐

  • g_main_loop_new (NULL, FALSE) 原理分析

    gtk main g main loop new原理分析 我们知道GUI应用程序都是事件驱动的 这些事件大部分都来自于用户 比如键盘事件 鼠标事件或笔点事件 还有一些事件来自于系统内部 比如定时事件 socket事件和其它文件事件等等 在没
  • React学习笔记:useCallback与useMemo

    在react中 useCallback与useMemo的主要作用在于进行性能的一个优化 这两者要怎么使用呢 另外这两者之间又有什么关系 在使用React时 当我们某一个值发生改变时 整个页面都会重新渲染一次 哪怕是一些没有任何变化的组件 函
  • Windows安装MySQL出现错误2503 2502 的解决办法

    1 打开任务管理器 Ctrl shift ESC 2 点击文件按钮 3 点击 运行新任务 按钮 4 输入下载好的MySQL安装文件的地址 文件名 比如我放在D MySQL文件夹里 文件名为 mysql installer web commu
  • 弹出层中的新建表单

    当用户访问一个展示了某个列表的页面 想新建一项但又不想跳转页面时 可以用 Modal 弹出一个表单 用户填写必要信息后创建新的项 Modal对话框 何时使用 需要用户处理事务 又不希望跳转页面以致打断工作流程时 可以使用 Modal 在当前
  • 13道C++面试问答(内存管理)

    new delete和malloc free之间有什么关系 int p new int 2 int q int malloc 2 sizeof int new与delete直接带具体类型的指针 malloc和free返回void类型的指针
  • python-爬虫-selenium总结

    爬虫 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 爬虫 前言 使用场景 一 前期准备工作 二 基本的操作 案例 使用selenium利用验证码识别平台 超级鹰 进行各种类型验证码验证 验证根据图像识别验证码输
  • JS:正则表达式中的替换 replace(内容包含匹配模式)

    replace 方法可以实现替换字符的操作 用来替换的参数可以是字符串或正则表达式 语法格式 第一个参数 被替换的可以是字符串也可以是正则表达式 第二个参数 替换为新的字符串 它返回的值是一个替换完的新字符串 需要接收过来 str repl
  • Ubuntu18.04下载vscode速度较快的方式

    各种原因导致自己重装系统 又再一次踏上了重装软件和文件配置的过程 在Linux操作系统上下载vscode一直是比慢的意见事 下载vscode我了解的大概有三种方式可以下载vscode 如果网速不是很理想的情况下 建议第三种方法 1 去官方文
  • .刷脸支付成为生活的重要组成部分

    在步入高速发展的信息化时代后 众多与互联网领域相关的产业开始崛起 在改变人们生活方式的同时 又极大的推动了社会的发展 在众多互联网产业当中 最引人注目的当属移动支付了 移动支付的诞生摒弃了以往繁琐的交易过程 把关键的部分交给一部手机 要说移
  • 处理器的计算能力如何计算

    我们常用双精度浮点运算能力衡量一个处理器的科学计算的能力 就是处理64bit小数点浮动数据的能力 支持AVX2的处理器的单指令的长度是256bit 每个intel核心假设包含2个FMA 一个FMA一个时钟周期可以进行2次乘或者加的运算 那么
  • mysql怎么卸载_怎样把mysql卸载干净?Mysql怎么卸载干净重装?

    很多朋友装mysql数据库时出现无法安装的情况 更可怕的是删除相关文件仍然无法安装 很伤脑筋 相信很多朋友都有过这种经历 其实导致数据无法安装的原因大多数是因为之前安装的Mysql数据没有卸载干净 导致第二次安装不 那么mysql安装失败后
  • 20、numpy——IO

    NumPy IO Numpy 可以读写磁盘上的文本数据或二进制数据 NumPy 为 ndarray 对象引入了一个简单的文件格式 npy npy 文件用于存储重建 ndarray 所需的数据 图形 dtype 和其他信息 常用的 IO 函数
  • C++笔记——std::min_element和std::max_element

    https blog csdn net breeze5428 article details 25918925 参考网页 http en cppreference com w cpp algorithm min element 主要有两种用
  • LangChain 手记 Conclusion结语

    整理并翻译自DeepLearning AI LangChain的官方课程 Conclusion Conclusion 结语 本系列短课展示了大量使用LangChain构建的大语言模型应用 包括处理用户反馈 文档上的问答系统甚至使用LLM来决
  • 艾伦·麦席森·图灵——如谜的解谜者

    艾伦 麦席森 图灵 Alan Mathison Turing 1912年6月23日 1954年6月7日 英国数学家 逻辑学家 被称为计算机科学之父 人工智能之父 科学美国人 这样评价图灵性情矛盾的一生 个人生活隐秘又喜欢大众读物和公共广播
  • Android 刘海屏全屏适配(沉溺式状态栏,隐藏状态栏)

    RequiresApi Build VERSION CODES LOLLIPOP override fun onCreate savedInstanceState Bundle super onCreate savedInstanceSta
  • 01-----Ubuntu16.04安装Gnome桌面环境

    从这篇起 我将使用Ubuntu16 04来搭建流媒体开发的环境 这是Ubuntu16 04空虚拟机的开始文章虚拟机下配置linux的网络上网 包括ssh gcc g 的安装 几乎所有软件的搭建都是从零开始 上面安装好能上网后 本篇将讲述关于
  • E: Sub-process /usr/bin/dpkg returned an error code (1)

    执行命令 apt update apt dist upgrade apt update apt dist upgrade 是由于apt get安装软件时出现了类似于 注意 根据搜索得知 var lib dpkg info下保存有各个软件包的
  • 2022年前端面试题整理,持续更新中

    端面试题整理 已同步到掘金 CSDN 掘金地址 https juejin cn post 7075332630417244173 CSDN 地址 https blog csdn net z1832729975 article details
  • 一种3D视频格式转换(H264 MVC至SBS / OU)方案

    本文尚处于草稿状态 提前公开仅供预览 前言 两年前我就想写这个话题的文章 但一直拖延到现在 因为我在等待SkyBox VR Player支持3D MVC 我在想 如果3D播放器已经支持播放3D MVC格式 那么MVC至SBS转换就没有必要