黑苹果如何播放DRM内容?

写在前面

奈飞(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 全参数解释

已有5534次阅读

 

小结

总的来说,应用 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 的问题。

 

 

0. 本站所有资源解压密码均为 heipg.cn
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到QQ群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!

黑苹果星球 » 黑苹果如何播放DRM内容?

5 评论

  1. 请问爱奇艺会员无法开启4K跟这个有关系不

    1. 好了,破案了,不要在App Store下载爱奇艺,到官网去下载

  2. 我设置了 强制 AMD AVC 加速解码器等等的 导致我的苹果录屏 截屏软件失效等一系列问题 ,您提到“在需要时修改”那现在如何关闭这些修改项呢

    1. 简单反向操作,把yes改成no,enable改成disable,反之亦然

  3. 不错,学习一下

发表回复