gpt4 book ai didi

android - 检测 Widevine DRM HDCP 保护级别

转载 作者:行者123 更新时间:2023-12-04 01:39:56 37 4
gpt4 key购买 nike

我目前正在切换到使用 Dash/Widevine DRM 的 ExoPlayer。通过测试,我遇到了很大比例的设备没有启用 HDCP 保护。由于契约(Contract)协议(protocol),这是一个问题。在允许播放之前,我必须检测到这一点并记录下来。

我从应用程序 DRM Info 中得到灵感,这甚至是可能的。 WideVineScreenShot

我的第一个想法是使用 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* Compiler Error

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/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com