如何使用 MediaDrm 处理多密钥 DRM
How to handle multikey DRM with MediaDrm
Android MediaDrm documentation 只有最简单用例的序列图。它没有说明具有多个连续加密密钥的 DASH 流应该如何工作。 (比如前10个用keyA加密,后面20个用keyB加密)
考虑到每个 DRM 会话只能保存一个密钥,每个 MediaCodec 只能配置一个 DRM 会话。我怎样才能做到以下几点:
- 请注意密钥已更改,除了检查所有 CryptoInfo.key 值或等待 CryptoException.ERROR_NO_KEY。
- 在不影响播放的情况下将 MediaCodec 切换到新的 DRM 会话? (停止、冲洗、重新配置)
在查看另一个实现时,我发现使用了以下 属性 字符串。
mediaDrm.setPropertyString("sessionSharing", "enable");
显然,设置此项允许 DRM 实现在需要时使用 MediaDrm 对象创建的任何会话中的密钥,而无需重新配置 MediaCodec。
令人沮丧的是,Android 文档或其他任何在线文档中都没有提及 属性 字符串。我看到它也在 Chromium MediaDrmBridge code 中使用,仅此而已。
Android MediaDrm documentation 只有最简单用例的序列图。它没有说明具有多个连续加密密钥的 DASH 流应该如何工作。 (比如前10个用keyA加密,后面20个用keyB加密)
考虑到每个 DRM 会话只能保存一个密钥,每个 MediaCodec 只能配置一个 DRM 会话。我怎样才能做到以下几点:
- 请注意密钥已更改,除了检查所有 CryptoInfo.key 值或等待 CryptoException.ERROR_NO_KEY。
- 在不影响播放的情况下将 MediaCodec 切换到新的 DRM 会话? (停止、冲洗、重新配置)
在查看另一个实现时,我发现使用了以下 属性 字符串。
mediaDrm.setPropertyString("sessionSharing", "enable");
显然,设置此项允许 DRM 实现在需要时使用 MediaDrm 对象创建的任何会话中的密钥,而无需重新配置 MediaCodec。
令人沮丧的是,Android 文档或其他任何在线文档中都没有提及 属性 字符串。我看到它也在 Chromium MediaDrmBridge code 中使用,仅此而已。