
在LG与索尼电视上使用hdr10plus的动态色调映射数据。
本文章也同时发布一份在lg电视贴吧上
https://tieba.baidu.com/p/7711917942
前言
在以前写的科普中介绍过的HDR10plus,hdr10plus与单层/MEL杜比视界的原理是一样的,都是运用人工设计的动态色调映射数据来告知电视如何处理hdr10视频。
既然他们原理一样的,那么理论上它们是可以互相转换。经过makemkv论坛的大佬们长达数年的研究解析杜比视界,终于有所成就。makmkv论坛的RESET_9999就开发出了专用的工具包,让其成为了可能。但现阶段对杜比视界还没完全解析,但在论坛上讨论来看,现阶段的工具足够用来转换hdr10plus到dolby vision
所需要的工具软件
Dolby-Vision-Tools工具包:https://pan.baidu.com/s/1h83ktyAI6MhHykmsEQczIg 提取码:jjnq
Mediainfo: https://mediaarea.net/download/binary/mediainfo-gui/21.09/MediaInfo_GUI_21.09_Windows.exe
mkvtoolnix:www.fosshub.com/MKVToolNix.html
tsmuxer: https://github.com/justdan96/tsMuxer/releases/download/nightly-2022-01-30-02-00-52/w64.zip
为什么要这么做
有些电影只有hdr10plus的版本,同为动态数据,却没有杜比视界版。有些流媒体的也这样(我说的就是你amzon)。
我在这里是使用的hdr10plus片源是《无耻混沌》的4K UHD碟就是这种类型,这张4K UHD碟支持hdr10plus,但不支持杜比视界,所以这张碟在lg与索尼电视上没有发挥出应有的水平。
当然你可以直接买同时支持hdr10plus与杜比视界的电视,就不用整这些。但是同时支持hdr10plus与杜比视界,画质又很好的电视,只有松下oled电视,但是松下不在国内售卖。
作为国内第一梯队画质的电视,不支持hdr10plus,只好用这种曲线救国的模式。当然这种人工设计动态色调映射对hdr10影片到底有多大提升,就是另外一个争论点了。
这次我就用《无耻混沌》的4K UHD碟作为实验对象。

《无耻混沌》的4K UHD碟信息,可以看出这只是一个hdr10plus视频源

开始,我们要提取出BDMV中视频与音频轨道,我的方法是这样。(当然是mkv文件的话,提取就可以直接用gMKVExtractGUI来提取。)
打开MKVToolNix,拖入index.bdmv

MKVToolNix会分析BDMV中的哪个playlist是主视频文件,例如在这张BDMV中00800.mpls是主视频索引文件

然后我们就可以关掉MKVToolNix了
接下来打开tsmuxer, 拖入00800.mpls,选择主要的视频与音频轨道,进行demux


就这样开始提取,大概需要20分钟
在提取的等待过程,我们Dolby-Vision-Tools工具包解压到D盘根目录,因为准备好的bat命令行默认在D盘上,如果你要放其他盘符,你就只能一个个手动改过去了。

等待结束后,tsmuxer就提取出了这两个轨道,重名成hdr10plus.hevc与dts.dts

看得懂吧
然后放入工具包内

接下来运行工具包里的HDR10plus.parser.bat,开始分析这个hdr10plus的metadata数据

别找错了


最后生成了一个hdr10plus的metadata.json文件

别打开它,,打开它是会卡死你的
现在打开mediainfo,导入hdr10plus.hevc

点击视图下的树状图

记录下,这个电影的最低与最高亮度,例如这张碟最低亮度是50nit,最高亮度是1000nits。CLL:970nit,FALL:478nits。有些HDR视频源是没有CLL与FALL值,如果没有就统一为0

记下数值,然后可以关掉了
现在我们打开edit.l6.(static.metadata).json文件,开始编辑信息

将50与1000数值输入到这里面,注意填写位置。CLL全称max_content_light_level,FALL全称max_frame_average_light_level

注意位置
然后运行HDR10plus.to.RPU.bat,开始将hdr10plus的metadata.json文件转换成杜比视界的matadata格式


运行的样子
最后我们得到了一个rpu.bin文件,这个就是杜比视界的metadata格式

接下来,hdr10plus.hevc中裁剪出10分钟的片段作为下一个阶段的读取材料
还是运用MKVToolNix来制作

在输出界面中,选择切割模式,前10分钟片段

最后就得到了一个10分钟片段,hdr10plus.mkv文件

这个剪辑过程是无损的,一般只要5分钟
接下来我们启用工具包里的staxrip,如果启动报错的话,可以去下载一个新的

将这个10分钟判断拖入staxrip

然后点击Crop吧

点击吧
这个步骤就是测量这个电影有没有黑边,有的话黑边是多少

最简单方式就是让软件自动测量

很快,最后测量出来黑边大小为280/280

然后记下这个数值,就可以关闭staxrip,没用了。
然后打开工具包的edit.l5.(active.area).json文件

别找错了
将黑边数值填入,保存。

有些电影上下黑边有可能不一样大,注意填写位置。甚至有些电影没有黑边
如果你的电影没有黑边,那就是0/0
然后运行RPU.EDIT.L5.bat,进行修改MetaData数值


运行成功时的样子
最后我们得到一个全新的杜比视界MetaData数据

接下来我们可以删除那些没用的文件了。而且将RPU-edited.bin重命名为rpu.bin

可别删错了
接下来我们查看一下,我们修改后的rpu.bin是什么样子。运行READ.rpu.bat

READ.rpu.bat
可以看到我们之前修改的数值,都应该要正确出现


往前拉,你可以看到这也是一个profile 8的杜比视界配置文件
关掉这个吧,只是查看一下信息而已。
接下来把最初的hdr10plus.hevc,重命名为hdr10.hevc

运行INJECT.bat,开始注入杜比视界数据


运行时的样子

运行过程中,CPU与内存占用都挺大的

结束时的样子
最后生成了一个injected_output.hevc文件,这个就是合成好的DV视频轨道

最后把它与dts音轨一起封入mkv即可(最新的mkvtoolnix可以直接制作dv mkv文件了)

如果你刚刚裁剪时没有关闭它,别忘了把切割模式关了

结束后就大功告成

最后看一下这个dv mkv的媒体信息,是一个profile8的MEL杜比视界

diy视频的话,现在民间组织会更推荐使用profile 8来配置杜比视界,看起来是有更好的兼容性
这个生成dv mkv文件,就是从hdr10plus转换而来。可以给z9x,dune播放激活杜比视界。
或者在shiled tv/索尼电视这类杜比视界兼容设备,配合kodi dv版来激活杜比视界
kodi dv版:https://www.kodinerds.net/index.php/Thread/69428-Maven-s-Kodi-Builds-f%C3%BCr-Android/
但是lg电视自带的播放器无法使用dv mkv文件,只能制作传统的dv mp4文件
我们将injected_output.hevc重命名为dv.hevc

别找错了
然后我们要把这个视频轨道与音频一起封入mp4。但是就这个《无耻混到》例子来说,它的音轨是DTS,而mp4对dts支持并不友善,lg也无法解码dts。
好在大部分UHD 4K碟里都有AC3音轨,提取来用就好。没有的话只好手动转换了。
所以我把dts转换成了ac3音轨,这个转换过程,我用到了eac3to,具体怎么用就不详细介绍,有兴趣可以查百度命令行怎么写。
eac3to:https://www.videohelp.com/download/eac3to334-UsEac3to132.zip

这个例子的命令行是这样写的(第一行),可以自己学着变通
然后就得到了一个ac3文件

运行MP4.P8.muxer.bat,就开始合成


结束后我们就得了一个DV mp4,可以给lg电视的自带播放器播放

DV MKV文件 在shiled tv/索尼电视 配合kodi dv上的效果

电视也进入杜比视界模式

画面没有异常
DV MKV播放成功
现在试试DV MP4 在lg电视上的表现

LG的播放器也识别到了VISION

画面没有异常
DV MP4播放成功
完结散花!!!!!!!!!
最后
以上的教程中命令行,并不绝对,有经验的用户可以自己调整。 这个工具包是非常强大的,现在也还在更新,有条件的可以去原作者github上探讨各种各样的细节。
我摸索这个工具也有3个月之久了,能做到的事情很多很多。
最后hdr10plus转dv,是否是正确的的转换,就需要大量的用户进行对比。特别是拥有松下oled电视的用户,可以对比转换版dv与原版hdr10plus是否有区别。
民间DV技术还会继续发展,以后可能会有一键式的吧。