Fairplay 在 iOS 12.4 和 13 上停止工作
Fairplay stops working on iOS 12.4 and 13
我有代码可以从我的应用程序播放加密的 Fairplay 流,它在 iOS 12.4 之前运行良好。我使用 AVAssetResourceLoaderDelegate
从 resourceLoader:shouldWaitForLoadingOfRequestedResource:
获取 AVAssetResourceLoadingRequest
然后从请求中提取 SPC 并发出 http 请求以获取 CKC。
但是在新的 iOS 12.4 上,加载请求一直在取消,resourceLoader:didCancelLoadingRequest:
在 resourceLoader:shouldWaitForLoadingOfRequestedResource:
之后立即被调用,我的播放器保持加载状态,没有错误。 Beta 上的行为相同 iOS 13. 可以播放清晰的流,但只有加密流存在问题。
有人遇到过这个问题吗?我应该迁移到 AVContentKeySession
以加载密钥吗?
我终于找到了问题的根本原因。我的旧代码有下一行:
resourceLoader.preloadsEligibleContentKeys = YES;
之前它工作正常。
但是从 12.4 开始,它无法播放我的测试中的加密流。如果不设置此标志,一切正常:播放 online/offline 内容并下载所以很奇怪,但此标志在新的 iOS 版本中已不再使用。
我有代码可以从我的应用程序播放加密的 Fairplay 流,它在 iOS 12.4 之前运行良好。我使用 AVAssetResourceLoaderDelegate
从 resourceLoader:shouldWaitForLoadingOfRequestedResource:
获取 AVAssetResourceLoadingRequest
然后从请求中提取 SPC 并发出 http 请求以获取 CKC。
但是在新的 iOS 12.4 上,加载请求一直在取消,resourceLoader:didCancelLoadingRequest:
在 resourceLoader:shouldWaitForLoadingOfRequestedResource:
之后立即被调用,我的播放器保持加载状态,没有错误。 Beta 上的行为相同 iOS 13. 可以播放清晰的流,但只有加密流存在问题。
有人遇到过这个问题吗?我应该迁移到 AVContentKeySession
以加载密钥吗?
我终于找到了问题的根本原因。我的旧代码有下一行:
resourceLoader.preloadsEligibleContentKeys = YES;
之前它工作正常。
但是从 12.4 开始,它无法播放我的测试中的加密流。如果不设置此标志,一切正常:播放 online/offline 内容并下载所以很奇怪,但此标志在新的 iOS 版本中已不再使用。