【问题标题】:Error Domain=AVFoundationErrorDomain Code=-11835 "Cannot Open"错误域=AVFoundationErrorDomain 代码=-11835“无法打开”
【发布时间】:2017-09-15 13:45:55
【问题描述】:

我目前正在尝试实施一项服务,以在 tvOS 应用上通过 FairPlay 流处理 DRM。 这是我的工作流程:

  1. 我将应用证书作为数据获取

  2. 从这个证书我得到 SPC 数据,使用:

    resourceLoadingRequest.streamingContentKeyRequestData(forApp: applicationCertificate, contentIdentifier: assetIDData, options: resourceLoadingRequestOptions)
    
  3. 从编码为 base64Data 的 SPC 数据,我在我们的服务器上请求 POST(在有效负载中包含 SPC)以获得许可证,该许可证为我提供 CKD 数据

  4. 然后,当我得到 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() 
    

但是在这些步骤之后我得到了错误:

错误域=AVFoundationErrorDomain 代码=-11835 “无法打开” UserInfo={NSUnderlyingError=0x170440de0 {错误 域=NSOSStatusErrorDomain 代码=-42681 "(null)"}, NSLocalizedFailureReason=此内容未经授权。, NSLocalizedDescription=无法打开}

有人有想法或提示吗?

其他信息:

  • 播放过程适用于不受保护的内容。

  • playerItem.errorLog() 返回 nil。

  • playerItem.status == .failed 返回 true。

  • 所有服务器端进程似乎都没有问题,因为它已经用于网站和智能电视。

【问题讨论】:

  • 我知道这是题外话。但是你能分享一下如何获得applicationCertificate吗?
  • 嗨,我也遇到了类似的问题。你找到解决办法了吗?
  • @Hlung 您从托管服务器获取您的应用程序证书(推荐)或加载到您的 App Bundle(测试目的),并可以获取其数据字节并发送到 loadingRequest.streamingContentKeyRequestData(forApp: certificateData, contentIdentifier: assetIdentifierData, options: nil) 。您的证书很可能应该是 .cer 格式。您可以通过以下方式获取其数据字节:let certificateURL = Bundle.main.url(forResource: "certificate", withExtension: "der"), let certificateData = try? Data(contentsOf: certificateURL)

标签: swift streaming tvos http-live-streaming fairplay


【解决方案1】:

我最近遇到了同样的问题。问题是streamingContentKeyRequestData(forApp...返回的CKC响应数据不仅仅是数据,它是base 64编码的字符串数据。您需要做的就是在响应数据请求之前对其进行解码:

 dataRequest.respond(with: Data(base64Encoded: datas)!)

对于生产代码,您需要正确处理可选性。希望这可以帮助!

【讨论】:

    猜你喜欢
    • 2014-11-30
    • 1970-01-01
    • 2018-12-16
    • 2017-07-09
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    相关资源
    最近更新 更多