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

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

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

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

    看了下开源的一些项目,使用 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 )等元素,系统都是支持这些的,为什么还会发生偏色?

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

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


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