V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kinnikuman
V2EX  ›  程序员

关于杜比视界授权与映射问题

  •  
  •   Kinnikuman · 78 天前 · 2169 次点击
    这是一个创建于 78 天前的主题,其中的信息可能已经有所发展或是发生改变。

    杜比视界是一种 HDR 视频格式,要完整播放杜比视界影片需要获得杜比的授权并且遵循其规则。

    那么在没有授权的情况下,将杜比视界映射(tone mapping)成 SDR 或标准 HDR ,这是否是可行的?

    比如使用 libplacebo 或者手动使用 ffmpeg 将颜色空间转换成 SDR 的。

    拿到杜比视界授权后,杜比实验室会给一套解码 DV 的算法吗?如果没有这个算法就无法播放 DV 最佳质量。

    近期看到 mpv 已经支持了 DV,所以好奇问下这个“支持”是什么意思?将其映射成 SDR ?还是尽量还原成 DV 质量?

    另外一个问题,比如一个支持 DV 的电视,播放 DV 的影片,使用 infuse (有杜比授权)播放,则会有 DV 最佳画质(高动态范围+拓展的色彩空间),并且电视也会提示打开了 DV 通道。如果是其他播放器,将影片映射成 SDR 后,电视会提示 DV 吗?从技术上讲,什么 API 可以让电视知道这个影片是 SDR HDR 还是 DV? 颜色深度吗?

    20 条回复    2024-01-28 17:25:16 +08:00
    wanguorui123
        1
    wanguorui123  
       78 天前   ❤️ 1
    DV->SDR 就是普通画质和色彩校正,应该不需要授权
    DV->单层 有色彩和亮度增强触发 DV 图标
    DV->双层 最大的色彩和亮度增强触发 DV 图标
    https://www.zhihu.com/tardis/bd/art/483427662?source_id=1001
    greenskinmonster
        2
    greenskinmonster  
       78 天前 via Android
    Android 播放软件一般是把视频流交给系统解码器播放,所以不需要单独授权,可以参考 Kodi 和 Google 的 exoplayer 库。Apple 的情况不了解。
    Kinnikuman
        3
    Kinnikuman  
    OP
       78 天前
    @greenskinmonster apple 自带的播放器支持杜比,也有杜比授权,但 apple 不支持 mkv ,所以很多视频需要播放器自己处理。
    greenskinmonster
        4
    greenskinmonster  
       78 天前 via Android
    @Kinnikuman 不是系统自带的播放软件,而是系统级视频解码器,mkv 或者 mp4 文件的视频/音频/字幕分离那是播放软件的功能,对解码器来说,只管处理视频流。
    Kinnikuman
        5
    Kinnikuman  
    OP
       78 天前
    @greenskinmonster 是的,我就是指这个意思。

    比如视频解析: https://developer.apple.com/documentation/videotoolbox

    音乐解析: https://developer.apple.com/documentation/audiotoolbox/audio_file_stream_services

    如果不支持的类型,需要软解。
    hello2090
        6
    hello2090  
       78 天前 via iPhone
    @Kinnikuman 他的意思是不支持 MKV 无所谓,你把他重新封装到 MP4 好了,只要 MP4 支持对应的音视频。这样就能把系统自带的解码器用起来了
    Kinnikuman
        7
    Kinnikuman  
    OP
       78 天前
    @hello2090 网上流行压制成 mkv 的,几十条字幕轨道和很多音轨全塞进 mkv 中。重新“封装“成 mp4 苹果可能会支持,但也有很多编码器苹果不支持,甚至苹果支持 hevc, 但 hev1 的 codec 确不支持。所以整这么麻烦不如找个强大的播放器。
    greenskinmonster
        8
    greenskinmonster  
       78 天前   ❤️ 1
    @Kinnikuman @hello2090
    再整理一下我的理解

    文件封装格式 (container) 和视频流格式 (codec)是两个层面的概念。视频文件里面可能有多个不同 codec 的视频流+多个音频流+多个字幕,是不能直接丢给系统视频解码器的。
    播放软件如( Kodi/Infuse )处理不同类型的文件,得到不同 codec 的视频流(杜比视界/HDR10 ),然后交给系统视频解码器处理。
    视频解码器( mediaCodec@android/videotoolbox@apple )不关心这个流是从 mkv 还是 mp4 来的,如果是支持的 codec ,则正常播放,不是则播放错误(黑屏、偏色等)。

    如果某个视频 codec 系统解码器不支持,那么播放器可以把它转换成系统解码器支持的 codec 降级 播放,比如杜比视界/HDR->SDR 映射。但是播放软件自己软解杜比视界,并且输出杜比视界画面,这种事情是没有的,必需硬件和系统支持才可以。

    现在我不确定的是 iOS 上的软件如 Infuse ,在设备已经支持杜比视界的情况下,还需不需要自己另外购买授权。
    Kinnikuman
        9
    Kinnikuman  
    OP
       78 天前
    @greenskinmonster
    "如果某个视频 codec 系统解码器不支持,那么播放器可以把它转换成系统解码器支持的 codec 降级 播放,比如杜比视界/HDR->SDR 映射。但是播放软件自己软解杜比视界,并且输出杜比视界画面,这种事情是没有的"

    这句话持怀疑态度。我做过音乐的解码,系统不支持 wma 格式,需要用 vlc 或者 ffmpeg 来将原始数据解码转换成 PCM 数据,[提供给系统来播放]( https://developer.apple.com/documentation/avfaudio/avaudioplayernode/1388422-schedulebuffer)。视频的话,杜比视界也是 h265 的,使用 h265 编码器来编码的,也要用 h265 的解码器来解码,类似的还有 VP9 AV1 等高质量压缩的 codec ,压缩质量越高算法越复杂,越消耗硬件。软件(不如 infuse )支持几乎所有类型的解码器,但在苹果系统下,如果系统支持的解码,则用 VideoToolbox 来解码,起码系统会进行优化( GPU 等),如果 VideoToolbox 不支持,则使用软件解码( CPU )。解码完成后的数据,Infuse 可能是用 Metal 进行渲染,其他平台可能是 OpenGL/vulkan 或者其他。所以拿到解码后的原始数据,包括一些色彩信息,杜比视界( HDR )包括一些动态数据,来指导如何渲染。

    上面是我的理解。
    Kinnikuman
        10
    Kinnikuman  
    OP
       78 天前
    "软件(不如 infuse )支持几乎所有类型的解码器" typo => "软件(比如 infuse )支持几乎所有类型的解码器"
    mxalbert1996
        11
    mxalbert1996  
       78 天前 via Android
    电视判断是不是 DV 是根据和视频信号一起通过 HDMI 传输的 metadata 。
    icy37785
        12
    icy37785  
       78 天前 via iPhone
    实际上能不能触发 dv 图标与是不是正确的 dv 解码没有关系,只要是想就算是 sdr 也一样可以触发 dv 图标。
    V28a19cc
        13
    V28a19cc  
       78 天前
    可行,MPV 和 MPCVR 之类的就是这么干的。具体的支持是映射成 HDR10 (目前只能还原 IPT 色彩),也可以转成 SDR 。
    jsq2627
        14
    jsq2627  
       77 天前   ❤️ 1
    杜比视界本来就有一定 backward compatibility
    https://en.wikipedia.org/wiki/Dolby_Vision#Profiles

    现在最常见的是 profile 5 (流媒体)、profile 7 (蓝光原盘)、profile 8 (流媒体和手机相机拍的视频)
    而他们的基础编码都是 HEVC ,用系统 HEVC 硬解即可。对于 profile 7/8 ,直接 HEVC 硬解并且按照 HDR 显示输出,就相当于 HDR10 。对于 profile 5 ,额外多一步色彩空间转换,也相当于 HDR10 。
    做到这个程度,观感上已经可以感知到正确的色彩和 HDR ,播放器就已经可以宣传”支持杜比视界“了。

    但是真正完整的杜比视界,还包括 dynamic metadata ( RPU 层),以及双层杜比( profile 7 FEL )。前者需要显示设备支持(除非 side-by-side 对比,否则肉眼很难感知区别),后者几乎没有播放器实现(大家显示器最高就是 10bit 色深,按照 FEL 解码出的 12bit 片源基本看不出区别,除非刻意在 EL 层塞入特殊效果的数据)。
    Kinnikuman
        15
    Kinnikuman  
    OP
       77 天前
    @greenskinmonster 9 楼的解释中,我研究了一下。做一下补充:使用 ffmpeg 将视频提取出视频流(也包括音频流,metadata ,字幕流等),将视频流打开获取到 packet 包,然后将 packet 包送入 codec ,可以获取到视频帧( frame ),每帧视频有数据信息,比如 YUV420 格式的图片 plane( https://ffmpeg.org/doxygen/trunk/structAVFrame.html#a1d0f65014a8d1bf78cec8cbed2304992)。不管是软解还是硬解,最后都是获取到每一帧视频,使用音频的时钟来对齐每一帧画面进行播放。每一帧视频可以使用一些工具比如 OpenGL/Vulkan/Metal 等绘制到屏幕上。视频帧中也包括一些色彩调教信息(杜比)使其让人眼看着更符合真实画面,但也要屏幕支持才能达到最佳观看效果。
    jsq2627
        16
    jsq2627  
       77 天前
    HDMI 2.1b 已经把 dynamic metadata 标准化,以后也不再是 DV/HDR10+ 专属了。
    jsq2627
        17
    jsq2627  
       77 天前   ❤️ 1
    > 拿到杜比视界授权后,杜比实验室会给一套解码 DV 的算法吗?

    早期的电视、播放器,必须用杜比的专用芯片,杜比才给认证。那么猜测这个芯片应该是包含了 HEVC 解码器、色彩空间转换、tone mapping 、EL 层解码 等所有功能。

    后来杜比认证不再要求专用芯片,可以由电视、播放器制造商自己软件实现。那么猜测杜比应该会提供相关算法实现或者闭源动态库。我觉得给动态库的可能性比较大。Windows 从商店安装了 Dolby Vision Extension 之后,就会获得几个有杜比实验室签名的 DLL 。
    greenskinmonster
        18
    greenskinmonster  
       77 天前
    @Kinnikuman #15 其实首先应该明确下“软解”的定义,是“无损软解”,即输入杜比世界,原样输出杜比视界至电视。还是有损软解,输入杜比视界,格式转换,输出 SDR 或者 HDR10 等转换后格式。

    输出杜比视界是需要系统授权支持,就算软解得到 YUV/YCbCr 数据,系统没有授权也输出不了。只能软解转换降级输出,目前大多数软解应该都是有损的这种情况。

    还有种情况,设备只支持硬件 h265 解码和杜比视界输出,需要播放一个 av1 编码的杜比视界视频,那么可以软解 av1 ,保留杜比视界 metadata ,输出给显示设备。这也算是无损软解了。目前还没实际案例,理论上把杜比视界数据格式逆向出来,是可以做到的。
    ysc3839
        19
    ysc3839  
       77 天前 via Android
    没授权的话那就是第三方实现的映射算法,质量能不能达到杜比官方的就难说了,但可能性是肯定有的,映射是纯算法的,不存在什么硬件门槛。
    杜比视界的“授权”有很多种,像是 Windows 的 DolbyVision Extension ,以及一些国内视频 app 的杜比视界,是映射成普通 HDR 或者 SDR 。电视盒子的授权,需要芯片支持,能通过 HDMI 输出杜比视界元数据给显示设备。电视盒子上的播放器,比如你说的 infuse ,是直接调用盒子的解码器,播放器本身是不需要授权的,一个播放器也买不到盒子的硬件授权,最多是前面那种纯软件的授权。
    ysc3839
        20
    ysc3839  
       77 天前 via Android
    @ysc3839 电视提示开启了 DV ,这种只能是电视盒子硬件支持,播放器纯软件实现不了,相关 API 就是直接用盒子系统的解码显示功能,内部会自动处理,细节没有公开。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2836 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:04 · PVG 23:04 · LAX 08:04 · JFK 11:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.