V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Kinnikuman
V2EX  ›  程序员

为什么播放杜比视界会发绿发紫?

  •  
  •   Kinnikuman · 2024-02-01 22:07:11 +08:00 · 4520 次点击
    这是一个创建于 381 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在苹果的系统中很多播放器都会发生这种偏色。

    看了下开源的一些项目,使用 AVSampleBufferDisplayLayerCAMetalLayer 等方式渲染画面。

    其中 AVSampleBufferDisplayLayer 是相对比较高级一点的 API ,将 sample buffer 发送到这个 layer 系统就可以进行渲染展示。其中这是苹果自己内部的渲染,只要 sample buffer 包含颜色信息,就会正常显示到显示器。

    CAMetalLayer 是相对底层的东西,需要根据画面手动设定颜色空间和像素格式等信息(预设一个场景),这样画面渲染的时候基于这些信息进行绘制。

    但不论是哪一种方式,对于 HDR 或者杜比视界来说,都是有相应的颜色空间/色彩原色/转换函数。讲的更详细一点,比如从视频中解码出一帧视频:

    1. format: 视频帧包含色深和色彩编码方式( RGB, YUV )
    2. color_range: 对于 YUV 又会有 full range 和 limited range
    3. colorspace: 相应的转换矩阵( RGB <-> YUV)
    4. color_trc: 转移函数将 RGB 转换成线性 RGB
    

    对于 HDR 画面来讲,会在不同区域显示出不同的高亮(简单通俗来讲),对于杜比视界,动态元数据可以针对每一帧画面做到调节颜色和亮度(普通 HDR 只能预设一种)。

    在一个不支持 HDR 的显示设备上显示 HDR 画面时候,系统会自动做相应的映射,有的是将超过 Reference-White 部分直接变成 Reference-White ,而有的映射是进行一个线性转换。

    所以我的疑问是,杜比视界也是有相应的色彩空间/转换函数( PQ )等元素,系统都是支持这些的,为什么还会发生偏色?

    24 条回复    2024-11-26 18:39:58 +08:00
    EdmondGUO
        1
    EdmondGUO  
       2024-02-01 22:33:57 +08:00
    我不懂这些高深的,我只知道不支持杜比视界的就会偏色,比如 mac 上我只知道 infuse 是可以不偏色的,比如新出的 VidHub 就不行,好像杜比视界是要交授权费的
    f2kandlove
        2
    f2kandlove  
       2024-02-01 22:56:56 +08:00 via iPhone
    因为大概率你用的播放器没有买杜比视界授权
    mxalbert1996
        3
    mxalbert1996  
       2024-02-01 23:32:02 +08:00 via Android
    很可能是因为这些播放器没有和像素信息一起发送 DV 的 per-frame metadata 。
    mxalbert1996
        4
    mxalbert1996  
       2024-02-01 23:59:55 +08:00 via Android
    哦不对,原因应该是因为这些播放器没有正确解码 DV 。DV 由 10bit 的 Basic Layer 和 Enhanced Layer 组成,正确解码时会把这两层组合成 12bit 的视频流,但不支持 DV 的解码器会只解码 BL ,结果就是偏色。
    SkywalkerJi
        5
    SkywalkerJi  
       2024-02-02 00:11:51 +08:00
    是钱的问题,和技术无关。
    没有授权,哪怕你知道解码算法,你也不能用。
    双层杜比更麻烦,很多是降级成单层播放的。
    SkywalkerJi
        6
    SkywalkerJi  
       2024-02-02 00:15:09 +08:00
    制作杜比视频好像也是这样。有免费封装的办法,但是自己玩可以,商用的话,没有授权应该也是不行的(达芬奇之类软件是在售价里包含了 dv 的授权)
    mxalbert1996
        7
    mxalbert1996  
       2024-02-02 01:05:04 +08:00 via Android
    @SkywalkerJi
    按我的理解,楼主并不是想问「为什么有些播放器不支持播放 DV 」,而是想问「为什么不支持 DV 的播放器播放 DV 会发绿发紫」。后者只和技术有关。
    datou
        8
    datou  
       2024-02-02 01:12:56 +08:00
    播放设备,播放软件和显示设备三者有一个不支持 DV 就不行吧?
    mxalbert1996
        9
    mxalbert1996  
       2024-02-02 01:15:24 +08:00 via Android
    另外我对播放器支持 DV 需要授权持怀疑态度。ffmpeg 已经通过试错和逆向实现了 DV 的专有格式的解码,mpv 、IINA 和 Kodi 等等开源免费的播放器也都支持播放 DV ,我不信他们付了授权费,也不信 Dolby 会放任他们不管。
    SkywalkerJi
        10
    SkywalkerJi  
       2024-02-02 01:30:31 +08:00 via Android   ❤️ 5
    @mxalbert1996
    因为 Profile5 下,dv 采用 IPTPQc2 色彩空间。
    发绿发紫是因为 IPTPQc2 色彩空间映射错误,默认情况下,不支持 dv 的播放器会尝试使用常规 YCbCr420 解码器对 IPTPQc2 色彩空间进行映射(内在判断逻辑可能因为 uhd 强制兼容 hdr10 ,播放器可能默认认为这是一个 10bit 420 hdr10 视频?),结果就是发绿发紫。
    txydhr
        11
    txydhr  
       2024-02-02 08:59:39 +08:00 via iPhone
    @mxalbert1996 很多所谓播放只是当普通视频播放了,完全没有杜比视界的效果
    ysc3839
        12
    ysc3839  
       2024-02-02 09:44:49 +08:00 via Android
    @mxalbert1996 播放器不一定需要授权,比如说支持解码杜比视界的 Android 盒子,用 MXPlayer 就能正常播放。那些自行实现算法的可能是侵权行为。
    Kinnikuman
        13
    Kinnikuman  
    OP
       2024-02-02 11:01:02 +08:00
    @datou 播放软件起到了调用硬件的作用,如果播放设备自己支持杜比视界输出,那也行,如果硬件不支持,软件也可以手动暴力( CPU )做相应的映射,映射成 HDR 或者是 SDR 。我的理解是,显示设备只负责展示,即使不支持 HDR ,那么系统也会有相应的映射,但起码不会发绿发紫。
    wanguorui123
        14
    wanguorui123  
       2024-02-02 12:12:06 +08:00
    可以通过手动调整色彩映射
    gdfsjunjun
        15
    gdfsjunjun  
       2024-02-02 16:02:38 +08:00
    偏绿说明播放器还是设备不支持杜比,强行播放就是这样的。
    pigf
        16
    pigf  
       2024-02-02 16:43:03 +08:00
    小米手机拍的杜比视频在相册播放就会成灰色,也是没交授权费?
    去小米之家问他们售后他们也完全搞不清楚
    mxalbert1996
        17
    mxalbert1996  
       2024-02-02 21:59:41 +08:00
    @ysc3839
    你知道我说的当然不是这种情况。我也说了,如果真的侵权我不信 Dolby 会放任他们不管。
    而且实现算法侵权这个其实是说不通的,就好比游戏机的模拟器不侵权一样。
    ysc3839
        18
    ysc3839  
       2024-02-02 22:42:36 +08:00 via Android
    @mxalbert1996 哪种情况?
    实际管不管很难说,有可能起诉成本太高所以不管,比如 HEVC 要收授权费,但是仍然有大量用户使用没被起诉。对侵权睁一只眼闭一只眼,放任市场发展是很正常的。
    程序代码侵权是有可能的,可以注册专利。一些开放源代码协议如 Apache License 就包含专利授权。
    Kinnikuman
        19
    Kinnikuman  
    OP
       2024-02-03 10:07:59 +08:00
    所以,mpv 这种“著名”的开源项目逆向将 Profile5 的色彩空间映射成 SDR(不确定 HDR),不算侵权做法吗?我也一直好奇,因为像这样的开源项目,不可能去做一些侵权的行为的,而且即使做了,杜比也会有所动静去制止。

    难道是,只要无法还原出 Profile5 原本的颜色,再怎么逆向映射,杜比就不管?


    @ysc3839 @mxalbert1996
    Fish1024
        20
    Fish1024  
       322 天前
    @EdmondGUO 今天看 vidhub 放杜比视界似乎没问题啊,iina 就偏色到奶奶家了。
    EdmondGUO
        21
    EdmondGUO  
       322 天前
    @Fish1024 可能什么时候的更新修复了吧。我记得很清楚,之前我测试的适合还是偏色的,所以我就没取消 infuse 的订阅,今天我试了下好像不偏色了,看来今年订阅到期了可以转 vidhub 了。
    Kinnikuman
        22
    Kinnikuman  
    OP
       319 天前
    @Fish1024 映射成 SDR 还是 HDR?
    Fish1024
        23
    Fish1024  
       319 天前
    @Kinnikuman #22 我不知道映射成什么,就是下载了直接用的。在 MacOS 系统设置面开启 HDR 和不开启 HDR 都正常。
    xinnyu
        24
    xinnyu  
       82 天前
    @wanguorui123 #14 大佬可以请教一下需要怎么调整吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2858 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:13 · PVG 22:13 · LAX 06:13 · JFK 09:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.