首页 > 解决方案 > 使 AVAssetResourceLoaderDelegate 和 AVContentKeySessionDelegate 一起工作

问题描述

我正在使用 AVAssetResourceLoaderDelegate 加载字幕和其他音轨(m2u8 播放列表)。我正在使用 AVContentKeySession 和 AVContentKeySessionDelegate 来解密内容(DRM)。分别它们都运行良好:加载并显示字幕,AVPlayer 要求密钥并成功提供。但是,当我将它们一起使用时,AVPlayer 从不通过 AVContentKeySessionDelegate 询问其密钥。

当我在 resourceLoader 中时,我试图通过 processContentKeyRequest 手动请求密钥。即使我获得了内容密钥,看起来 AVPlayer 也从未收到过它。

我无法在 AVAssetResourceLoaderDelegate 内处理密钥,因为我需要解决双重到期问题,所以我需要使用 AVContentKeySessionDelegate 来接收 didUpdatePersistableContentKey。

标签: iosswift

解决方案


好吧,显然 AVAssetResourceLoaderDelegate 的 shouldWaitForLoadingOfRequestedResource 必须返回 false 才能启动关键会话加载。


推荐阅读