Ios 下载启用Fairplay的视频时获取服务器播放上下文时出错

Ios 下载启用Fairplay的视频时获取服务器播放上下文时出错,ios,swift,drm,avasset,fairplay,Ios,Swift,Drm,Avasset,Fairplay,在实现脱机FPS时,获取AVFoundation错误-11800 我正在使用FPS实现离线HLS 我已使用AVAssetDownloadDelegate下载了视频 现在,对于DRM内容,我需要获取许可证,因此我已经实现了AVAssetResourceLoaderDelegate 在AVAssetResourceLoaderDelegate中一切正常,我获得了CKC或许可证,但当我执行以下代码时 让persistentContentKeyContext=尝试加载请求。persistentConte

在实现脱机FPS时,获取AVFoundation错误-11800 我正在使用FPS实现离线HLS

我已使用AVAssetDownloadDelegate下载了视频 现在,对于DRM内容,我需要获取许可证,因此我已经实现了AVAssetResourceLoaderDelegate 在AVAssetResourceLoaderDelegate中一切正常,我获得了CKC或许可证,但当我执行以下代码时

让persistentContentKeyContext=尝试加载请求。persistentContentKey(来自KeyVendorResponse:responseData,选项:nil)

我得到以下错误

Error Domain=AVFoundationErrorDomain Code=-11800“操作无法完成”UserInfo={NSLocalizedFailureReason=发生未知错误(-12158),NSLocalizedDescription=操作无法完成,NSUnderlyingError=0x1c084a6e0{Error Domain=nsossStatUserRorDomain Code=-12158(null)}


任何人都可以告诉我这个错误代码是什么意思,以及如何解决这个错误。

不幸的是,您看到的错误响应并不像您所注意到的那样信息丰富,可能涵盖多个故障案例

这通常意味着设备FairPlay服务无法正确解码DRM服务器提供给设备的CKC,或者其中的某些信息与永久许可证不一致

这对您来说是一个调试问题,因为发回的CKC是以您无法读取的方式进行加密的-请参阅下面Apple提供的显示序列的图表:


调试和调查此问题的最佳方法通常是联系DRM服务器的提供商(上图中的密钥服务器),看看他们是否可以在服务器端进行调查,并解码他们发送给您的响应,以便您可以检查它是否符合您的预期,以及持续时间等是否正确。

基本上,对我来说,获取persistentContentKey的方法引发错误。流媒体工作正常,但当我尝试下载支持DRM的视频时,它在获取persistentContentKey时抛出一个错误。使用上述方法的func persistentContentKey(fromKeyVendorResponse keyVendorResponse:Data,options:[String:Any]?=nil)抛出错误。您找到任何解决方案了吗?在我的例子中,缺少allowPersistence标记,该标记后来被添加,并且有效。后来在播放视频时也出现了问题,但DRM服务提供商更改了许可证后,问题得到了解决