我目前正在尝试实施一项服务,以在 tvOS 应用程序上使用 FairPlay 流处理 DRM。这是我的工作流程:
我将应用程序证书作为数据
从这个证书我得到 SPC 数据,使用:
resourceLoadingRequest.streamingContentKeyRequestData(forApp: applicationCertificate, contentIdentifier: assetIDData, options: resourceLoadingRequestOptions)
从编码为 base64Data 的 SPC 数据,我在我们的服务器上请求 POST(在有效负载中带有 SPC)以获得许可证,该许可证为我提供了 CKD 数据
然后当我得到 CKC 数据时,我使用它们如下:
guard let dataRequest = resourceLoadingRequest.dataRequest else { print("no data is being requested in loadingRequest") let error = NSError(domain: AssetLoaderDelegate.errorDomain, code: -6, userInfo: nil) resourceLoadingRequest.finishLoading(with: error) return } dataRequest.respond(with: datas) resourceLoadingRequest.finishLoading()
但在这些步骤之后,我得到了错误:
Error Domain=AVFoundationErrorDomain Code=-11835 "Cannot Open" UserInfo={NSUnderlyingError=0x170440de0 {Error Domain=NSOSStatusErrorDomain Code=-42681 "(null)"}, NSLocalizedFailureReason=此内容未经授权。, NSLocalizedDescription=Cannot Open}
有没有人有想法或提示?
附加信息:
播放过程适用于不受保护的内容。
playerItem.errorLog() 返回零。
playerItem.status == .failed 返回真。
所有服务器端进程似乎都可以,因为它已经用于网站和智能电视。