1.Apple Vision Pros使用的源码MV-HEVC编码格式
2.从命令行轻松将文本片段上传到类似 Pastebin 的服务中
Apple Vision Pros使用的MV-HEVC编码格式
MV-HEVC,全称Multiview High Efficiency Video Coding,源码是源码HEVC(High Efficiency Video Coding)编码标准的扩展部分,记为HEVC version 2。源码这一视频编码标准自年7月发布以来,源码相关标准于年月发布。源码盘点系统源码然而,源码尽管这一标准已发布近十年,源码但在具体业务中的源码应用却并不多。
年6月,源码在WWDC开发者大会上,源码苹果公司宣布,源码通过iOS .2 Beta版本,源码iPhone Pro能够拍摄出Apple Vision Pro的源码空间视频,而Apple Vision Pro所采用的源码大象视频源码视频编码格式,正是MV-HEVC。
为何苹果选择使用MV-HEVC格式来实现3D视频编码?在开发者大会上,苹果介绍了3D视频的视频,链接地址如下:developer.apple.com/vid...
苹果表示,MV-HEVC实际上是HEVC,而目前对HEVC视频编码格式支持最好的或许就是苹果。无论是基于HEVC的HEIF静态格式、HEVC的动图live photo,还是苹果的HEVC视频hvc1,苹果都提供了良好的支持。
苹果在开发者大会上所提到的“空间视频”,其原理与我们在**院看的3D**类似,都是利用人眼的左右眼视差来制造和表现“立体”效果。
从视频编解码的oscache源码分析角度来看,使用MV-HEVC方案的好处是,它可以在不改变slice层以下的HEVC原有语法和解码过程下,通过layer间预测技术实现对3D和多视角视频的支持。这也意味着MV-HEVC可后向兼容和使用现有的HEVC编码器和解码器,不需要有较大的修改,仅修改high level语法即可。
如果对MV-HEVC格式做了Block Level语法的修改,此时对应的便是JCT-3V制定的3D-HEVC格式,它的压缩性能要比MV-HEVC更高,会有额外的压缩性能的工具。
目前MV-HEVC和3D-HEVC的参考软件都是同一套代码,叫做HTM。hevc.hhi.fraunhofer.de/...
HTM的代码是使用SVN进行版本管理的,如果想下载源码,杜比音效源码在macOS上可以在终端直接使用下面的命令检出代码:
在HTM源码的TypeDef.h头文件中,可以看到有一个HEVC_EXT宏,如果这个宏的值是1,此时编译的就是MV-HEVC,而如果是2,此时就是3D-HEVC。
在MV-HEVC标准中语法元素LayerId,表示该NALU所归属的view。在空间视频中,通常用LayerId 0表示该帧属于左视点(通常也是主视点),LayerId 1则表示属于右视点(辅视点)。
属于主视点的图像编码参考帧规则保持和沿用标准HEVC,它得到的码流就是标准HEVC码流,而辅视点每一帧图像编码多了视点间的nao 源码 跳舞参考帧,如果显示设备还不支持解码和播放MV-HEVC格式,那就可以只解码和显示主视点的标准HEVC码流,就像把3D**用2D来看一样。
实际上3D-HEVC,MV-HEVC以及Scalable HEVC有一样的层间预测技术,都可以抽取出base view码流,且能用支持Main profile的HEVC解码器来解码。而3D-HEVC里还可以抽取出MV-HEVC的码流,因为MV-HEVC加上Depth信息就是3D-HEVC,而HEVC加上delta信息就是MV-HEVC。
最后,再来看一下MV-HEVC名字里的view具体是什么?view表示All layers belonging to the same camera perspective,包括像苹果的MV-HEVC格式,通常是有2个view,分别是left view和right view,对应人眼的左眼和右眼。
当然也可以有多个view,下图是4个layer和2个view的编码结构和参考依赖图。
以上是对MV-HEVC的简单介绍,由于目前能够支持对其进行正常解析和解码的硬件和软件几乎没有,所以暂时不能对实际拍摄的空间视频做更多分析和介绍。更多MV-HEVC对高层语法的修改内容请参考文章后面的参考资料4。
虽然今天来看MV-HEVC不是什么新技术,但苹果能在自家手机和消费终端Apple Version Pro上首次推广和使用这个技术,让这个技术更接近用户,此举是值得点赞的。而对我们这些视频编解码算法工程师来说,一项编码技术能有更多的业务应用,也是好事。
参考资料
1. ieeexplore.ieee.org/sta...
2. developer.apple.com/av-...
3.Standardized Extensions of High Efficiency Video Coding (HEVC)
4.Overview of the Multiview and 3D Extensions of High Efficiency Video Coding
5. pastebin.com/qZ1xSmuc#...
从命令行轻松将文本片段上传到类似 Pastebin 的服务中
使用 Wgetpaste 脚本,任何人都可以轻松地将文本片段上传到类似 Pastebin 的服务中,与朋友、同事或在类似 Unix 的系统中的命令行中查看/使用/审查代码的人快速共享文本片段。Wgetpaste 是一个命令行 BASH 实用程序,可方便地将文本摘要上传到类似 Pastebin 的服务中。
首先,安装 Wgetpaste。在 Arch Linux 及其变体(如 Antergos 和 Manjaro Linux)上,只需运行以下命令:
对于其他发行版,请从 Wgetpaste 网站获取源代码,并手动安装。
安装完成后,可以使用以下步骤上传文本片段:
1. 上传文本文件:运行命令,将上传文本文件的内容。示例输出包含上传后的 URL,可以通过邮件、短信、whatsapp 或 IRC 等任何媒体共享。拥有此 URL 的人都可以访问它,并在他们选择的 Web 浏览器中查看文本文件的内容。
2. 将文字片段上传到其他服务:默认情况下,Wgetpaste 会将文本片段上传到 poundpython(paste.pound-python.org/)服务。要查看支持的服务列表,请运行命令。要将内容上传到其他服务,例如 bpaste.net,请使用如下的 -s 选项。
3. 从标准输入读取输入:此命令将上传从命令行输入的内容。
4. 上传命令及命令的输出:此功能很有用,当你想让其他人清楚地知道你刚运行的确切命令及其输出时。这会将命令及其输出上传到 pastebin 服务。
5. 上载系统日志文件、配置文件:可以上传系统中任何类型的文本文件,例如日志文件、特定命令的输出等。例如,上传 pacman.log 文件内容的命令。
6. 将输入网址转换为短链接:默认情况下,Wgetpaste 将在输出中显示完整的 pastebin URL。如果要将输入 URL 转换为短链接,只需使用-u 选项。
7. 设定语言:默认情况下,Wgetpaste 将上传“纯文本”中的文本片段。要列出指定服务支持的语言,请使用-L 选项。可以使用-l 选项来改变它。
8. 在输出中禁用语法突出显示或 html:可以更改此行为,以使用-r 选项显示原始文本摘要。
9. 更改 Wgetpaste 默认值:所有默认值都可以在 /etc/wgetpaste.conf 中全局更改,也可以在 ~/.wgetpaste.conf 文件中针对每个用户更改。
. 获得帮助:要显示帮助部分,请运行命令。