Fairplay 在 iOS 12.4 和 13 上停止工作

Fairplay stops working on iOS 12.4 and 13

我有代码可以从我的应用程序播放加密的 Fairplay 流,它在 iOS 12.4 之前运行良好。我使用 AVAssetResourceLoaderDelegateresourceLoader:shouldWaitForLoadingOfRequestedResource: 获取 AVAssetResourceLoadingRequest 然后从请求中提取 SPC 并发出 http 请求以获取 CKC。

但是在新的 iOS 12.4 上,加载请求一直在取消,resourceLoader:didCancelLoadingRequest:resourceLoader:shouldWaitForLoadingOfRequestedResource: 之后立即被调用,我的播放器保持加载状态,没有错误。 Beta 上的行为相同 iOS 13. 可以播放清晰的流,但只有加密流存在问题。

有人遇到过这个问题吗?我应该迁移到 AVContentKeySession 以加载密钥吗?

我终于找到了问题的根本原因。我的旧代码有下一行:

resourceLoader.preloadsEligibleContentKeys = YES;

之前它工作正常。

但是从 12.4 开始,它无法播放我的测试中的加密流。如果不设置此标志,一切正常:播放 online/offline 内容并下载所以很奇怪,但此标志在新的 iOS 版本中已不再使用。