如何使用android.drm框架

2023-11-30

我正在开发一个基于 DRM 的 Android 应用程序。 应用程序旨在在下载并获得对文件(音频、视频)的控制访问权限后对(音频、视频)文件进行加密,防止文件(音频、视频)复制和粘贴并使文档过期,从而无法再查看它们。为此我使用 android.drm

我搜索了很多但没有得到任何结果

因此,请分享一些示例代码来解释如何使用 DRM 框架 api。

Refered:

https://www.widevine.com/wv_drm.html

https://source.android.com/devices/drm

https://developer.android.com/reference/android/drm/package-summary.html


在大多数 DRM 场景中,从 DRM 的角度来看,Android 设备将是客户端,而不是服务器。

换句话说,Android 设备通常是播放设备,需要向 DRM 系统请求密钥才能查看内容。

从理论上讲,Android 设备没有理由不能充当打包程序或对内容进行加密,但这不是规范,因此它不是 Android 中 DRM 框架或示例的设置方式。

如果您确实想了解如何在设备上播放受 DRM 保护的内容,那么 Exoplayer 演示有很好的工作示例。

以 DefaultDRMSessionManager 为起点:https://github.com/google/ExoPlayer/blob/d979469659861f7fe1d39d153b90bdff1ab479cc/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java

Update

受保护内容的示例工作流程:

  1. 内容在服务器上被摄取(即以某种方式加载或放置在流媒体服务器上)
  2. 内容已注册到 DRM 许可证服务器并请求加密密钥
  3. 当用户请求视频文件时,该文件将被打包为适合设备的流协议(通常为 Android 的 MPEG DASH),并使用从 DRM 服务器接收到的密钥对视频文件进行加密。
  4. 请求流的设备(即您的情况下的 Android 设备)接收流并识别它已加密。它从许可证服务器请求许可证密钥。在使用 Widevine DRM 的 Android 设备上,播放器配置中必须包含许可证服务器的 URL。
  5. DRM 服务器将密钥安全地发送到播放内容的 Android 设备。密钥和未加密的内容对应用程序甚至操作系统都是不可见的,因为它是使用 DRM 系统和设备安全媒体路径播放的。

流媒体服务器和 DRM 服务器通常是相当复杂的系统,您不太可能想要自己构建其中任何一个。

对于流媒体服务器,您可以查看和使用开源示例 - 例如:https://gstreamer.freedesktop.org

如果您想尝试 DRM,则可以将 Clearkey DRM 与 Exoplayer 支持的 MPEG DASH 结合使用。它不像常规 DRM 方案那么安全,但它是免费的,因此值得检查它是否满足您的需求。

某些编码服务允许您尝试设置clearkey - 请参阅此处的示例:https://bitmovin.com/tutorials/mpeg-cenc-clearkey-drm-encryption/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用android.drm框架 的相关文章

随机推荐

  • 日期时间和 DbNull.Value

    有谁知道为什么这有效 if item Created DateTime MinValue ListSqlParam Add new SqlParameter TransactionCreated DBNull Value else List
  • 如何替换多个匹配的正则表达式

    我有一组正则表达式替换需要应用于一组字符串 例如 所有多个空格都带有单个空格 s 2 gt 全部 后跟一个 char 后跟空格 后跟字符 a zA Z gt 1 所以我会有这样的东西 String s hello how are you s
  • 将多个文本文件导入到工作簿中,其中工作表名称与文本文件名匹配

    介绍 继续我之前的question最初 我之前的代码 在堆栈交换专家的帮助下 运行良好 Problem 但下次当我再次导入文件时 我必须每月导入一次 它会创建重复的工作表 所以我想修改我的项目如下 单击 导入文本文件 按钮后 VBA 代码
  • 如何为 Visual Studio 云测试的每个核心代理使用不同的 .csv?

    我正在尝试使用 Visual Studio Cloud Test 执行简单的 REST API 负载测试 https www visualstudio com en us docs test performance testing gett
  • lambda 表达式中的赋值

    我想定义一些 lambda 表达式来表示类实例属性的更新 我尝试写如下 Expression
  • 从 require.context 迁移到 import.meta.webpackContext

    我正在尝试将我的 Vue PWA 迁移到 ESM 替换所有require by import 但更换require context by import meta webpackContext在编译时给我以下警告 严重依赖 不支持直接访问 i
  • 在字典理解中使用 eval 时出现 NameError

    我正在尝试在我的班级中编写字典 data element eval self s element for element in key 我有这个错误 data element eval self s element for element
  • 如何在 ChangeNotifier 中使用 Futures?

    我有一个sqlite我从中读取数据的数据库 我还有一棵很长的小部件树 所以经过一番研究后我发现provider颤振包 但我不知道如何在类扩展中使用 FuturesChangeNotifier或者如何在我的小部件树中的任何位置使用它 clas
  • 为通过参数返回的函数创建类型映射

    我正在转换 C api gt Java 并且我有以下函数原型 Retrieves an individual field value from the current Line param reader pointer to Text Re
  • 如何启用电子身份验证的弹出窗口?

    我正在创建一个访问 url 的电子应用程序 当导航到该 URL 时 用户单击按钮并被重定向到在 Chrome 中显示此弹出窗口的 URL 如何在电子中启用 显示此弹出窗口 默认情况下似乎没有启用它 您在图片中看到的是 Chrome 打开一个
  • 内容的最大长度?

    我正在尝试使用连接服务器HttpURLConnection 但我的 PUT 方法有问题 我需要发送一个字符串1500 个字符 或更多 但在这种情况下 服务器会产生超时并返回500 服务器内部错误 如果我发送的字符串低于1400 个字符 我没
  • 在没有安装 Hadoop 的情况下在 Spark 上提交 .py 脚本

    我有以下简单的字数统计 Python 脚本 from pyspark import SparkConf SparkContext conf SparkConf setMaster local setAppName My App sc Spa
  • 硒中的单击相当于双击

    我有一个简单的代码 点击链接就会打开一个新窗口 但是在执行脚本时 单击与双击同一元素一样 会打开 2 个窗口 我正在使用 InternetExplorer 驱动程序 String baseURL URL to opened DesiredC
  • 检测用户是否对 Android 中的应用进行评分

    最近我读到一篇关于市场上的游戏的文章 我不会透露名称 因为我认为这种做法对 Android 来说是负面的 不想公开它 如果你没有评级就不允许更新市场5星 这就是文章所说的 我想知道这是否可以检测到 如果是 如何做到这一点 我只需要知道用户是
  • famo.us 中的表面渲染事件

    我正在寻找一个事件来告诉我何时渲染表面 以便我可以调用诸如 surface focus 之类的方法 如果我在创建表面后立即调用焦点 它将不起作用 如果我在任意时间后在计时器中调用它 我希望它能够被渲染 它就会起作用 所以一定有一个我可以使用
  • 反射诸如“double”之类的基本类型会导致意外的输出

    以下示例失败并显示 FAIL MyClass tests getClassReturnsConstructorForDouble Expected
  • 通过Windows批处理文件读取csv文件并创建txt文件

    我有一个 Excel 文件 每行有 5 个值 现在 我想通过批处理文件读取 csv 文件并使用文件中的内容创建文本文件 例如 如果我的 csv 文件 在一列中 中有 Apple Mango 则批处理文件应读取此 csv 文件 并应创建一个文
  • Android 模拟器无法访问互联网,共享互联网连接

    我已经安装了 Eclipse Juno 并将 ADT 也更新到 22 0 我创建了一个 Android 2 3 版本的自定义 AVD 工作正常 但我的模拟器上似乎没有互联网连接 注意 标题栏上还会显示 3G 符号 看看下面给出的我的模拟器的
  • 检测 Python 海龟游戏中的碰撞

    我正在尝试制作一个红海龟追逐蓝海龟的Python游戏 当红海龟抓住蓝海龟时 我希望它在屏幕上显示 碰撞 但它不起作用 当它碰撞时 什么也没有发生 它给我一个错误 Turtle 对象不可调用 from turtle import Turtle
  • 如何使用android.drm框架

    我正在开发一个基于 DRM 的 Android 应用程序 应用程序旨在在下载并获得对文件 音频 视频 的控制访问权限后对 音频 视频 文件进行加密 防止文件 音频 视频 复制和粘贴并使文档过期 从而无法再查看它们 为此我使用 android