Fairplay播放无效

时间:2017-03-24 16:18:37

标签: avplayer drm fairplay

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

  1. 接到我们代表的电话: shouldWaitForLoadingOfRequestedResource
  2. 在上面的电话中,我们正确下载了证书,并且 证书+ assetId,我们成功生成了SPC
  3. 通过SPC,我们可以POST到许可证服务器并且非常有效 收到CKC
  4. 使用CKC,我们致电

    loadingRequest.dataRequest?.respond(with: ckcResponseData)  
    loadingRequest.finishLoading()
    
  5. 但视频没有开始播放。 有什么我们遗失的吗?我们是否需要“FPS部署包”以使其与我们的苹果帐户一起使用? 请注意,我们已经在真实设备上进行测试。

1 个答案:

答案 0 :(得分:0)

如果没有看到您的实施,很难说。无论如何,根据我对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的具体内容,但是关于加载资产更为一般,它并没有违反任何许可协议)