黑苹果如何播放DRM内容?

5534 admin
剧情解密

写在前面

奈飞(Netflix,另一称“网飞”)近几年真的很火,并且越来越火。从《Seven》(七宗罪)到《V for Vendetta》(V 字仇杀队),从《Love、Death、Robots》(爱死机)到 2021 年火遍全球的《Squid Game》(鱿鱼游戏),奈飞旗下手握数字 IP 无数,这些鼎鼎大名的作品相信已经成为一代人心中的记忆,不过本文接下来并不是要探讨奈飞的数字内容宇宙。

随着流式媒体平台的火爆,有部分小伙伴通过各种姿势上车了 Netflix/Amazon Prime/Disney+/Apple TV+ 等新兴流媒体平台的会员,然后发现自己的黑苹果有时并不能正常播放这些内容;再或者购入了一套心仪已久的 AirPods Pro/Max/HomePod,发现赠送的 Apple Music 会员无法在黑苹果上播放...

这其中的原因,就是 DRM 在作怪。

DRM,英文全称 Digital Rights Management,直译为“数字版权管理”。数字版权管理是指数字内容,如音视频节目内容、文档、电子书籍等在生产、传播、销售、使用过程中进行的权利保护、使用控制与管理的技术。详见百度百科 或 Wikipedia,本文不深究其原理及作用,仅针对黑苹果如何处理带 DRM 系统的数字内容做一些说明和探讨。

遗憾的是,在 macOS 升级到 11.x 版本(Big Sur)和 Safari 14.x 以后,苹果公司移除了 macOS 所有 DRM 软件解码器,DRM 内容的播放在苹果自家产品上是这么处理的:T2 和 M1 芯片内置了 DRM 硬件解码器;没有 T2 芯片的机型则使用拥有苹果数字证书的 iGPU 固件处理 DRM 内容,没有核显的机型则使用独立显卡的硬件解码器,而更古老的硬件解码器(例如 NVIDIA VP3)则干脆直接删除支持,因为这些机型本来也在新版本 macOS 的计划淘汰名单中。

单就奈飞的情况来看,目前 4K 内容和未来更高清的数字内容会强制要求使用 T2/M1 机型(macOS)或 7 代酷睿及以上平台(Windows),详见 9to5mac 这篇文章,未来的大方向就是内容版权方要求数字内容必须经由硬件解码。

铺垫那么多,其实就是要明确以下几点:

新兴的流式媒体数字内容平台很多都配备了 DRM 以保护版权方利益;

普通 PC(黑苹果)的核显不支持苹果的 iGPU 固件,也没有苹果的数字证书所以不支持硬件解码 DRM 内容;

macOS 10.15.x 及以下版本目前仍然保留了 DRM 软件解码器;

macOS 11.x 及以上版本完全删除了 DRM 软件解码器和古老的硬件解码器支持,因此 DRM 内容解码靠硬件,需要使用免驱支持的独立显卡,可见「macOS 独立显卡支持表」,免驱显卡优先选择较新型号,AMD 显卡建议 RX400/500(Polaris)及以上,NVIDIA 的免驱显卡则完全不建议考虑。

鉴于 11.x 及以上系统不存在 DRM 软件解码器,接下来要讨论的内容主要基于 10.15.x 的 macOS 系统。

DRM 解码测试

建议在你认为已经完成黑苹果安装调试,驱动核显及优化独显(如果有优化方案的话)之后,再进行下列几项常见的 DRM 测试。

FairPlay 1.x:基于软件的 DRM,主要用于旧型号 Mac。

最简单的测试方法是播放 iTunes 商店里的影片,或者尝试这个:FairPlay 1.x Test.m4v,提取码:3qv3

只要 WhateverGreen.kext 的设置正确,FairPlay 1.x 的影片适用于任何黑苹果配置,包括只有核显的配置。但是,FairPlay 1.x 电影只能在仅有核显的配置上播放大约 3-5 秒,然后错误地认为不支持 HDCP。

FairPlay 2.x/3.x:基于硬件的 DRM,主要见于奈飞(Netflix)和 Amazon Prime。

直接到奈飞或 Amazon Prime 网站点几个 4K 影片看一下,或者播放 Amazon Prime 预告片《蜘蛛侠:英雄远征》,这个预告片没有 DRM 加密,但 Amazon 的播放器仍然会先检查是否支持。

「注意」要求 Polaris(RX4x0/RX5x0)及更新架构的 AMD 显卡。

FairPlay 4.x:混合 DRM,见于 AppleTV+。

如果你所在的地区可以正常使用 AppleTV,打开运行,选择 TV+,然后选择 Free AppleTV+ Premieres,然后点击任意内容进行测试。

支持 AppleTV+ 业务的地区苹果公司会赠送一定时间试用,可供测试。

「注意」要求没有核显的 Xeon 系列处理器或 Polaris(RX4x0/RX5x0)及更新架构的 AMD 显卡。在混合 DRM 模式和没有核显的情况下,强制 FairPlay 1.x 工作是可行的。

如果上述测试一切正常,就没有必要继续往下看了。

Shiki.kext

在软件解码 DRM 内容流行时,黑苹果世界有位大神开发了 Shiki.kext,目前该项目已合并到 WhateverGreen.kext(WEG),WEG 继承了 Shiki.kext 的所有 DRM 补丁功能。Shiki.kext 允许调用 macOS 内置的 DRM 软件解码器对 DRM 内容进行解码播放,但并不能把苹果公司已删除的 DRM 软件解码器带回来,因此并不保证 11.x 及以上系统可以正常工作。

macOS 10.15.x Catalina + Safari 13.x 支持很多 DRM 解码器类型,Acidanthera 团队中的大神 vit9696 曾经整理了一个详细的表格,适用于常见的各类黑苹果硬件类型:

配置黑果机型适用模式iTunes 预告片iTunes 电影苹果 TV+Amazon Prime 预告片Amazon Prime/Netflix英特尔 IQSV

核显+AMD独显iMac/Macminishikigva=16软解 FairPlay 1.0软解 FairPlay 2.0硬解 FairPlay 4.0普通硬解不支持支持

核显+AMD独显iMac/Macminishikigva=80软解 FairPlay 1.0软解 FairPlay 2.0硬解 FairPlay 4.0硬解 FairPlay 3.0硬解 FairPlay 3.0支持

仅AMD独显iMacPro/MacPro软解 FairPlay 1.0软解 FairPlay 2.0硬解 FairPlay 4.0硬解 FairPlay 3.0硬解 FairPlay 3.0不支持

仅AMD独显iMacPro/MacProshikigva=128硬解 FairPlay 1.0硬解 FairPlay 2.0硬解 FairPlay 4.0硬解 FairPlay 3.0硬解 FairPlay 3.0不支持

核显+NVIDIA独显iMac/Macmini软解 FairPlay 1.0软解 FairPlay 2.0不支持普通硬解不支持支持

仅NVIDIA独显iMacPro/MacProshikigva=256软解 FairPlay 1.0软解 FairPlay 2.0软解 FairPlay 3.0普通硬解不支持不支持

仅核显iMac/Macmini软解 FairPlay 1.0不支持不支持普通硬解不支持支持

几点说明:

「注意」:适用上表的硬件配置情况,iMac 机型必须满足这个条件:拥有 AMD/NVIDIA 独立显卡的配置,核显需设置为专门用于硬解加速的帧缓冲 ID,例如 0x3E9B0007 核显是有画面输出的,而 0x3E980003 核显仅用于计算加速;iMacPro 和 MacPro 机型是没有核显的处理器机型首选。

「普通软解」:软件未加密解码器,任意情况下都能正常工作;

「普通硬解」:硬件未加密解码器,值需要兼容硬解的 GPU 就能工作;

「软解 FairPlay 1.0」:软件 FairPlay 1.0 解码器 (CoreFP);

「软解 FairPlay 2.0」:软件 FairPlay 1.0 解码器 (CoreFP),需要 HDCP;

「软解 FairPlay 3.0」:软件 FairPlay 4.0 解码器 (CoreLSKD),需要 HDCP 且无需核显;

「硬解 FairPlay 1.0」:硬件 FairPlay 1.0 解码器 (CoreFP),需要支持的 AMD 显卡;

「硬解 FairPlay 2.0」:硬件 FairPlay 1.0 解码器 (CoreFP),需要 HDCP 和支持的 AMD 显卡;

「硬解 FairPlay 3.0」:硬件 FairPlay 2.0/3.0 解码器 (CoreLSKDMSE),需要 HDCP 和支持的 AMD 显卡;

「硬解 FairPlay 4.0」:硬件 FairPlay 4.0 解码器 (CoreLSKD),需要 HDCP 和支持的 AMD 显卡;

「英特尔 IQSV」:指的是 Intel Quick Sync Video,当存在英特尔核显并在 BIOS 中启用,且设置正确时才有效;

上表中的 shikigva=N 可以直接作为启动参数使用,例如 shikigva=80 或 shikigva=16。也可以用作设备属性(DeviceProperties)进行注入。启动参数的添加方法见「启动参数说明」一文,下面介绍一下如何用设备属性方法分配到你的核显/独显上。「注意」如果你有多个显卡,只能选择其中一个进行设备属性注入,否则无法保证 shikigva 功能是否工作正常。

设备属性注入法

首先从 Hackintool 获取你的显卡 Pci 路径:

如图所示复制 Device Path。

然后打开 OpenCore Configurator / OpenCoreAuxiliaryTools / PlistEDPlus 编辑器(适用 OpenCore 用户)Clover Configurator (适用 Clover 用户),照图输入:

OpenCore Configurator

OCAuxiliaryTools

PlistEDPlus

Clover Configurator

上图中的 shikigva=80 是可以自行定义的,可参考是本文之前给出的表格,另一种是参考 WEG 的开发堆栈中 kern_shiki.hpp 的内容,开发团队写了非常多的注释,如下:

ShikiGVAPatches {

// Remove forceOfflineRenderer from AppleGVA Info.plist.

// This is required to allow hardware acceleration on several mac models with discrete GPUs

// when only IGPU is available.

// See /System/Library/PrivateFrameworks/AppleGVA.framework/Resources/Info.plist for more details.

ForceOnlineRenderer = 1,

// Remove hweBGRA from AppleGVA Info.plist.

// hweBGRA is not supported by NVIDIA GPUs, so the patch is sometimes required when using NVIDIA

// in a mac model meant to be used with AMD or Intel.

// See /System/Library/PrivateFrameworks/AppleGVA.framework/Resources/Info.plist for more details.

AllowNonBGRA = 2,

// Prior to 10.13.4 certain GPU+CPU combinations were not meant to provide hardware acceleration and had to be patched.

// The overall problematic configuration list is: NVIDIA+BDW, NVIDIA+SKL, NVIDIA+KBL, AMD+IVB, NVIDIA+SNB.

// Enabled automatically if shikigva is *NOT* passed on 10.13.3 and earlier. All are fixed in 10.13.4.

ForceCompatibleRenderer = 4,

// Unlike 10.12.6 without security updates and earlier, on 10.13 and latest 10.12.6 AppleGVA patches

// do not apply to all processes, and each process needs to be patched explicitly. This is a bug

// in Lilu, which needs to be explored and fixed. For now this bit ensures that the processes present

// in WHITELIST section of Patches.plist will definitely get the fixes even on 10.13 and 10.12.6.

// On 10.12.6 and 10.13 this must be used if any of the following bits are used:

// - ForceOnlineRenderer

// - AllowNonBGRA

// - ForceCompatibleRenderer

// - ReplaceBoardID

// - FixSandyBridgeClassName

// It is enabled automatically on 10.12 and 10.13 if shikigva is *NOT* passed and ForceCompatibleRenderer or

// FixSandyBridgeClassName are automatically enabled.

AddExecutableWhitelist = 8,

// Use hardware DRM decoder (normally AMD) by pretending to be iMacPro in apps that require it.

// For example, in Music.app or TV.app for TV+.

UseHwDrmDecoder = 16,

// Replace board-id used by AppleGVA and AppleVPA by a different board-id.

// Sometimes it is feasible to use different GPU acceleration settings from the main mac model.

// By default Mac-27ADBB7B4CEE8E61 (iMac14,2) will be used, but you can override this via shiki-id boot-arg.

// See /System/Library/PrivateFrameworks/AppleGVA.framework/Resources/Info.plist for more details.

ReplaceBoardID = 32,

// Attempt to support fps.2_1 (FairPlay 2.x) in Safari with hardware decoder. Works on most modern AMD GPUs.

// Note, AMD Polaris Ellesmere is broken in 10.15 (e.g. RX 590), whereas AMD Polaris Baffin (e.g. RX 460) is fine.

// Easiest check is to run WebKitMediaKeys.isTypeSupported("com.apple.fps.2_1", "video/mp4") in Safari Web Console.

// Broken GPU driver will just freeze the system with .gpuRestart crash.

UseHwDrmStreaming = 64,

// Disables software decoder unlock patches for FairPlay 1.0.

// This will use AMD decoder if available, but currently requires IGPU to be either not present or disabled.

UseLegacyHwDrmDecoder = 128,

// Enables software decoder unlock patches for FairPlay 4.0.

// This will use software decoder, but currently requires IGPU to be either not present or disabled.

UseSwDrmDecoder = 256,

};

Shiki 全参数解释

当前内容被隐藏,登陆后查看已有8946次阅读

登录后查看

小结

总的来说,应用 Shiki 的功能调整 macOS 的 DRM 解码策略是比较简单的。举个例子,如果你的配置是 AMD 5900X,独显是 5700XT,那么按照表格你可以选择 shikigva=128,你可以使用启动参数方式,也可以使用设备属性注入方式,修改好配置后重启系统进行验证是否生效;

再举个例子,如果你的配置是 i9-9900K,独显是 Radeon VII,选择面就宽一点,在启用核显的情况下有 shikigva=16 和 shikigva=80 两种,在关闭核显后还可以尝试 shikigva=128,修改好配置后重启系统进行验证是否生效。

比较少见的特殊配置,例如 i7-3770k + 6800XT (已关闭核显)这类老处理器搭较新显卡的情况,不包含在上面的表单中。建议按照上面给出的 Shiki 的全功能解释逐个尝试,或自行研究。

对于比较古老的处理器(例如 Xeon 或 Core 2 Quad)搭配支持的 AMD 显卡,要使用带 DRM 的流式媒体时,需要给显卡注入以下设备属性:

unfairgva | 01 00 00 00 | Data

AMD 显卡的视频解码器首选项可以覆盖部分类型的 DRM 内容(如 Apple TV 和 iTunes 电影流)的首选项。但是这些首选项可能不完全和 macOS 其它功能兼容,可能导致其他软件或程序的解码/编码功能出现问题。下面提供了几组可供修改的首选项修改,不建议日常使用,在需要时修改。打开终端按需输入即可:

defaults write com.apple.AppleGVA gvaForceAMDAVCDecode -boolean yes

# 强制 AMD AVC 加速解码器

defaults write com.apple.AppleGVA gvaForceAMDKE -boolean yes

# 强制 AMD DRM 解码器用于流媒体服务(例如 AppleTV 和 iTunes 电影流)

defaults write com.apple.AppleGVA gvaForceAMDAVCEncode -boolean yes

# 强制 AMD AVC 加速编码器

defaults write com.apple.AppleGVA gvaForceAMDHEVCDecode -boolean yes

# 强制 AMD HEVC 加速解码器

defaults write com.apple.AppleGVA disableGVAEncryption -string YES

# 强制 AMD HEVC 加速解码器

defaults write com.apple.coremedia hardwareVideoDecoder -string force

# 强制硬件加速视频解码器(适用于任何分辨率)

defaults write com.apple.coremedia hardwareVideoDecoder -string disable

# 关闭硬件加速视频解码器(QuickTime / AppleTV)

上述第一条还可能同时可以解决 macOS Big Sur 中 VDADecoderCreate failed. err: -12473 的问题。

平潭县妇幼保健所 CAD打印出图设置(附图层、线宽标准)