- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在切换到使用 Dash/Widevine DRM 的 ExoPlayer。通过测试,我遇到了很大比例的设备没有启用 HDCP 保护。由于契约(Contract)协议(protocol),这是一个问题。在允许播放之前,我必须检测到这一点并记录下来。
我从应用程序 DRM Info 中得到灵感,这甚至是可能的。
我的第一个想法是使用 DrmManagerClient
我放弃了它,因为我没有得到结果并尝试使用 MediaDrm
val mediaDrm = MediaDrm(WIDEVINE_UUID)
val vendor = mediaDrm.getPropertyString(MediaDrm.PROPERTY_VENDOR)
val version = mediaDrm.getPropertyString(MediaDrm.PROPERTY_VERSION)
val description = mediaDrm.getPropertyString(MediaDrm.PROPERTY_DESCRIPTION)
val algorithms = mediaDrm.getPropertyString(MediaDrm.PROPERTY_ALGORITHMS)
var hdcp: String? = null
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
hdcp = mediaDrm.connectedHdcpLevel.toString()
}
Log.i("WideVine", "$vendor $version $description $algorithms $hdcp")
哪个有效!惊人的问题解决了!
...除了如您所见,它只适用于 Pie 及更高版本...这是不行的。 DrmInfo 适用于我尝试过的每个 Android 版本。我只是不知道如何使用 DrmManagerClient
并且文档几乎不存在。
任何信息都将受到重视,谢谢。
最佳答案
好吧,在一整天都在尝试之后,我开始认为这是不可能的。我最好的尝试都失败了,一次 StackOverflow甚至与此主题相关的帖子都有提示,但没有用。
val algorithms = mediaDrm.getPropertyString("maxHdcpLevel")
但是正如您在这里看到的,这不会通过编译器并且需要 MediaDrm.Property*
val stringProperties = arrayOf(
MediaDrm.PROPERTY_VENDOR,
MediaDrm.PROPERTY_VERSION,
MediaDrm.PROPERTY_DESCRIPTION,
MediaDrm.PROPERTY_ALGORITHMS,
"maxHdcpLevel")
val widevinePropertiesMap = mutableMapOf<String, String>()
for (prop in stringProperties) {
widevinePropertiesMap[prop] = mediaDrm.getPropertyString(prop)
Log.i(prop, mediaDrm.getPropertyString(prop))
}
Log.i("maxHdcpLevel:", "${widevinePropertiesMap["maxHdcpLevel"]}")
或者,如果你只想得到一件东西,你可以...
@SupressLint("WrongConstant")
这行得通!
我不太确定为什么您可以通过这种方式利用该方法,但是,它可以完成工作!
以下是我们可以获得的一些额外属性:
val securityLevel = mediaDrm.getPropertyString("securityLevel")
val systemId = mediaDrm.getPropertyString("systemId")
val hdcpLevel = mediaDrm.getPropertyString("hdcpLevel")
val maxHdcpLevel = mediaDrm.getPropertyString("maxHdcpLevel")
val usageReportingSupport = mediaDrm.getPropertyString("usageReportingSupport")
val maxNumberOfSessions = mediaDrm.getPropertyString("maxNumberOfSessions")
val numberOfOpenSessions = mediaDrm.getPropertyString("numberOfOpenSessions")
关于android - 检测 Widevine DRM HDCP 保护级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57896720/
我在 C# Windows 窗体中工作,并希望确保我的窗体上的内容仅通过使用系统硬件的 HDCP 兼容流输出。这将需要一个多步骤过程。该过程的高级框图描述如下: 判断显示器是否支持HDCP 判断显卡是
我们对 Android 平板电脑应用程序有一个客户端要求,该应用程序将用于实时流式传输,只允许 HDCP 兼容设备进行镜像。如果连接了非 HDCP 兼容设备,应用程序应阻止 HDMI 输出镜像。我浏览
我目前正在切换到使用 Dash/Widevine DRM 的 ExoPlayer。通过测试,我遇到了很大比例的设备没有启用 HDCP 保护。由于契约(Contract)协议(protocol),这是一
是否可以以在播放过程中无法捕获的方式播放 Java 视频流(最好甚至不能截取单个屏幕截图)? HDCP 会允许这样的限制吗?如果是这样,HDCP 是否可以通过 Java 访问? 最佳答案 HDCP 不
在 Android Doc 和 Google 上找不到任何确定的内容。 如果有 API 可以检测到这一点,它是什么以及在 HDMI 输出上启用/禁用 HDCP 的 API 是什么? 如果没有 API
我正在开发一个 WPF 应用程序,它将在 Windows 媒体播放器实例中播放 protected 视频。在播放视频之前,我必须确保显示设备启用了 HDCP。如果设备未启用 HDCP,则不允许播放视频
QTKit 或 AVPlayer 是否可以播放受 HDCP 保护的视频。我知道 QuickTIme 播放器播放视频(例如,从 iTunes 下载的视频),但是当我使用QTMovie时,他拒绝播放这个文
我正在尝试确定当 HDCP 策略阻止播放高清内容时降级到标清内容的最佳做法。 通过网络浏览器播放检测 HDCP 功能的最佳方法是什么? 降级的适当步骤是什么? 我发现一些 Flash 线程建议在每次启
它如何影响安卓手机 DRM 内容流。当我在 android 设备中检查 DRMinfo 时,一些手机显示 HDCP 级别未 protected 。有些显示 HDCP 级别已断开连接。它们之间有什么区别
Mac OS X 中是否有任何公共(public) API 用于检查所连接显示器的高带宽数字内容保护 (HDCP) 和/或显示端口内容保护 (DPCP) 合规性,或要求仅显示应用程序的输出在符合 HD
我是一名优秀的程序员,十分优秀!