ios - 使 AVAssetResourceLoaderDelegate 和 AVContentKeySessionDelegate 一起工作
问题描述
我正在使用 AVAssetResourceLoaderDelegate 加载字幕和其他音轨(m2u8 播放列表)。我正在使用 AVContentKeySession 和 AVContentKeySessionDelegate 来解密内容(DRM)。分别它们都运行良好:加载并显示字幕,AVPlayer 要求密钥并成功提供。但是,当我将它们一起使用时,AVPlayer 从不通过 AVContentKeySessionDelegate 询问其密钥。
当我在 resourceLoader 中时,我试图通过 processContentKeyRequest 手动请求密钥。即使我获得了内容密钥,看起来 AVPlayer 也从未收到过它。
我无法在 AVAssetResourceLoaderDelegate 内处理密钥,因为我需要解决双重到期问题,所以我需要使用 AVContentKeySessionDelegate 来接收 didUpdatePersistableContentKey。
解决方案
好吧,显然 AVAssetResourceLoaderDelegate 的 shouldWaitForLoadingOfRequestedResource 必须返回 false 才能启动关键会话加载。
推荐阅读
- c++ - 为什么对象的静态初始化肯定为零?
- c - 如何检测连接的 Unix 域数据报套接字已关闭
- ios - Swift中的多个变量等于相同的值
- java - 克鲁什卡尔算法。我的代码有什么问题?
- python - 如何通过逐行求和(SQL Alchemy)来创建布尔掩码?
- mongodb - 使用 /data/db 目录文件创建新的 mong db
- python - 如何将前一个单元格的输出导出到 csv 文件?
- flutter - 有没有类似于 SwiftUI 的 Disclosure Group 的小部件?
- c# - 当文本长于文本框宽度时禁用文本滚动
- javascript - 我如何制作一个对 HTML 元素的内容做出反应的 if 语句?