【问题标题】:Fairplay playback not workingFairplay 播放不工作
【发布时间】:2017-08-17 16:24:32
【问题描述】:

我们正在使用我们的视频播放器实现公平播放,我们能够执行苹果播放 drm 视频所需的所有步骤,但视频无法播放。 我们能够:

  1. 接听我们代表的电话: shouldWaitForLoadingOfRequestedResource
  2. 在上述调用中,我们正确下载了证书,并使用 证书+assetId,我们成功生成了SPC
  3. 使用 SPC,我们可以 POST 到许可证服务器并成功 收到 CKC
  4. 使用 CKC,我们调用

    loadingRequest.dataRequest?.respond(with: ckcResponseData)  
    loadingRequest.finishLoading()
    

但是视频只是没有开始播放。 我们缺少什么吗?我们是否需要“FPS 部署包”才能使其与我们的苹果帐户一起使用? 请注意,我们已经在真实设备上进行了测试。

【问题讨论】:

  • 在 drm 视频文件的公平播放视频播放方面需要您的帮助。我不知道要开始。我下载了带有HLSCatalogWithFPS - AVAssetResourceLoader 示例项目的苹果文档。但无法获得要遵循的确切步骤。你能帮我解决这个问题吗?

标签: avplayer drm fairplay


【解决方案1】:

没有看到你的实现很难说。无论如何,这是我可以根据我对 FairPlay 的经验分享的内容。我假设您的播放器可以播放未加密的视频,因此它很好地实施和工作。

如果你成功进入“finishLoading”部分,在另一边(并且在所有这些发生之前),你需要在播放器上注册为“currentItem.status”的观察者。比如:

player.addObserver(self, forKeyPath: "currentItem.status", options: NSKeyValueObservingOptions.new, context: nil);

所以,在某个阶段,你会收到 observeValueForKeyPath 回调,你需要检查发生了什么:

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    // Do any other KVO-related checks... and the following:
    if let status = self.player.currentItem?.status {
        switch (status) {
        case .failed:
            // Something went wrong!
            self.itemFailed()
        case .readyToPlay:
            // Item is ready to play, so just .play() it!
            self.itemReadyToPlay()
        case .unknown:
            // Oh-oh.
            self.itemUnknown()
        }
    }
}

如果您已经处于此阶段,请告诉我,您会遇到什么错误。

(这里分享的内容不是关于 FairPlay 的具体内容,而是关于加载资产的更笼统的内容,它不会违反任何许可协议)

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多