【发布时间】:2020-10-05 16:50:07
【问题描述】:
在我的 iOS 应用程序的 ViewController.swift 中实现了 AVContentKeySessionDelegate 的委托方法,使用 Brightcove SDK 播放 drm 内容。
代码sn-p:
class ViewController: UIViewController, AVContentKeySessionDelegate, BCOVPlaybackControllerDelegate {
var contentKeySession: AVContentKeySession!
.
.
func getVideo() {
// fetching video using an API call
.
.
let asset = AVURLAsset(url: videoUrl)
self.contentKeySession = AVContentKeySession(keySystem: .fairPlayStreaming)
self.contentKeySession?.setDelegate(self, queue: DispatchQueue.main)
self.contentKeySession?.addContentKeyRecipient(asset)
}
//MARK: - AVContentKeySessionDelegate Methods
func contentKeySession(_ session: AVContentKeySession, didProvide keyRequest: AVContentKeyRequest) {
handleKeyRequest(keyRequest: keyRequest)
}
func contentKeySession(_ session: AVContentKeySession, contentKeyRequest keyRequest: AVContentKeyRequest, didFailWithError err: Error) {
print(err)
}
func contentKeySession(_ session: AVContentKeySession, contentKeyRequestDidSucceed keyRequest: AVContentKeyRequest) {
print(keyRequest)
}
}
问题
- 这些委托方法都没有被调用。
- 另外,注意到 Xcode 控制台中出现错误提示:NSURLConnection finished with error - code -1002(在 Info.plist 的 App Transport Settings 中将允许任意加载设置为 true)
【问题讨论】:
-
当您在 iOS FairPlay 中看到 -1002 代码错误时,这通常意味着您没有获得内容密钥。你已经找到了答案。恭喜。最好的。
标签: ios swift drm brightcove avcontentkeysession