在收集电影资源的时候,你是否遇到过这种情况:有些资源的流媒体版本拥有杜比视界 HDR ,而更高码率蓝光原盘版本则没有。但是两份资源都存下来过于耗费存储空间了,秉持着“我可能用用不着,但必须有的”原则,难道没有两全其美的方法吗?直到有一天,我在逛论坛的时候发现了一个神奇的命令行工具—— dovi_tool

对,就是它,有了它我们就可以将流媒体版本的杜比视界层提取出来,再“搬”到蓝光版本上,这样就能达到既要…又要…的目的了。废话不多说,动手最重要!

在开始之前,你需要了解这些知识:

详解 HDR 技术 —— 知乎

如何区分单层与双层杜比视界【Dolby Vision】—— 知乎

还需要准备 ffmpeg 工具

简单来说,我们所做的就是利用工具将流媒体版本(单层杜比视界 或者叫杜比视界 profile 5 )资源中的 RPU 层提取出来,再将其注入到蓝光原盘资源中。所以接下来的方法仅适用于流媒体版的单层杜比视界。

另外再开始之前,我们还要检查一下两个资源的总帧数和帧率是否匹配,不然最终的视频就会出现亮度波动的情况。

首先我们需要分离出待提取资源 A 和待注入资源 B 的 h265 裸流

1
ffmpeg -i A.mp4 -codec copy -bsf hevc_mp4toannexb -f hevc A_output.hevc

这里同样也能提取 mkv 文件,要注意的是这里的提取必须要使用 ffmpeg 工具,不然后面用 dovi tool 可能会报错。

接下来使用 dovi 工具提取 RPU 层 ,并将其转换为向后兼容 HDR10 的杜比视界 profile 8 。

1
dovi_tool -m 2 extract-rpu A_output.hevc

如果是 profile 5 转换为 profile 8 ,请将参数更改为 3

最后把转换好的 RPU.bin 注入到 B 的 h265 裸流中就大功告成了。

1
dovi_tool inject-rpu RPU.bin -o B_output.hevc

如果制作成功了,在 Mediainfo 会显示这样的信息:

1
HDR format: Dolby Vision, Version 1.0, dvhe.08.06, BL+RPU, HDR10 compatible / SMPTE ST 2086, HDR10 compatible

是不是非常简单?本人尝试了一下使用该方法制作的资源,效果也是非常不错的,在电视上完美呈现了杜比视界动态 HDR 的优点,你也可以试一试这个 demo 来看看实际效果如何。

这个工具还有更多有趣的玩法,感兴趣的同学可以阅读官方文档。如果对你有帮助的话,不妨给这个项目加个 star 。