当前位置: 首页 > 知识库问答 >
问题:

Widevine DRM-在FireTV上请求多个DRM密钥出错

解晟
2023-03-14

在我的应用程序中,我使用exoplayer播放DASH视频流。流由WIDEVINE进行DRM保护。我的DashManifest有多个键。一个键用于SD,一个键用于HD流。当我在FireTV上启动视频时,出现以下错误:

xoPlayerImplInternal:播放错误。com.google.Androidexoplayer2。com上的ExoPlaybackException。谷歌。Androidexoplayer2。mediacodec。MediaCodecRenderer。shouldWaitForKeys(mediacodeRenderer.java:896)网站。谷歌。Androidexoplayer2。mediacodec。MediaCodecRenderer。com上的feedInputBuffer(mediacoderenderer.java:783)。谷歌。Androidexoplayer2。mediacodec。MediaCodecRenderer。render(MediaCodecRenderer.java:606)。谷歌。Androidexoplayer2。ExoPlayerImplInternal。com上的doSomeWork(ExoPlayerImplInternal.java:518)。谷歌。Androidexoplayer2。ExoPlayerImplInternal。android上的handleMessage(ExoPlayerImplInternal.java:301)。操作系统。处理程序。android上的dispatchMessage(Handler.java:98)。操作系统。活套。android上的loop(Looper.java:135)。操作系统。手柄Thread。com导致的运行(HandlerThread.java:61)。谷歌。Androidexoplayer2。drm。DrmSession$DrmSessionException:android。媒体MediaDrm$MediaDrmStateException:无法获取密钥请求:DRM供应商定义的错误:-com上的2998。谷歌。Androidexoplayer2。drm。DefaultDrmSession。com上的onError(DefaultDrmSession.java:422)。谷歌。Androidexoplayer2。drm。DefaultDrmSession。com上的onKeysError(DefaultDrmSession.java:417)。谷歌。Androidexoplayer2。drm。DefaultDrmSession。com上的postKeyRequest(DefaultDrmSession.java:368)。谷歌。Androidexoplayer2。drm。DefaultDrmSession。doLicense(DefaultDrmSession.java:300)位于com.google.Androidexoplayer2。drm。DefaultDrmSession。在com上获取(DefaultDrmSession.java:162)。谷歌。Androidexoplayer2。drm。DefaultDrmSessionManager。com上的acquireSession(DefaultDrmSessionManager.java:558)。谷歌。Androidexoplayer2。mediacodec。MediaCodecRenderer。com上的onInputFormatChanged(MediaCodecRenderer.java:935)。谷歌。Androidexoplayer2。视频MediaCodecVideoRenderer。com上的onInputFormatChanged(MediaCodecVideoRenderer.java:522)。谷歌。Androidexoplayer2。mediacodec。MediaCodecRenderer。render(MediaCodecRenderer.java:589)。谷歌。Androidexoplayer2。ExoPlayerImplInternal。com上的doSomeWork(ExoPlayerImplInternal.java:518)。谷歌。Androidexoplayer2。ExoPlayerImplInternal。android上的handleMessage(ExoPlayerImplInternal.java:301)。操作系统。处理程序。android上的dispatchMessage(Handler.java:98)。操作系统。活套。android上的loop(Looper.java:135)。操作系统。手柄Thread。运行(HandlerThread.java:61)

我不知道这个设备或我的配置有什么问题。有人能解释一下什么样的密钥请求失败:DRM供应商定义的错误:-2998确切的意思吗?

共有1个答案

何浩荡
2023-03-14

此错误通常与设备特定的错误相关,不幸的是,这些错误通常需要设备供应商提供信息和修复。

亚马逊论坛也报道了这一点(可能是你或你同事的报告):https://forums.developer.amazon.com/questions/187540/error-by-requesting-drm-keys-1.html

您可以看到,这个问题甚至似乎是特定于某一代FireTV设备的问题。

我认为,作为一个设备供应商,加入并跟踪这种对话可能会很有用,因为它通常会优先考虑影响多人的问题。

顺便说一句,多键注释可能根本与问题无关,但对于在ExoPlayer中如何处理这一问题,有一些不同的解释,还有一个公开的问题(在撰写本文时),即多个键和脱机播放,其中包含一个非常好的概述(基本上,一些实现假设DRM服务器将返回所有键,即使只请求一个曲目,这不一定是正确的假设):https://github.com/google/ExoPlayer/issues/3872#issuecomment-367274776

 类似资料:
  • Im使用以下节点库azure-keyvault从azure keyvault获取、检索存储的秘密。Ive只找到api来检索机密值。我正在寻找一种在一次调用中检索多个秘密值的方法。我还没找到。有没有一种方法做到这一点,我错过了或它只是不支持。

  • 这是在收到以db为单位的帖子列表后发送带有每个帖子链接数据的POST请求的代码。 在使用每个链接请求帖子后,从回复中提取playerCount并将其更新到每个帖子。 我在这段代码中使用Resttemplate,但有一个问题需要花费太长时间。 所以我想把这个代码改为一次发送一个请求,并在所有请求完成后更新每个帖子。 我怎样才能把这个代码转换成我想要的? 我将使用此代码作为计划任务。

  • 我正在使用ADFS 2.0开发OIOSAML。我需要对IdP响应进行签名和加密。以下是我对SAML请求和响应的签名和加密工作原理的理解: < li>SP使用自己的证书密钥(Key-1)对请求进行签名 < li>IdP使用SP的公钥(Key-1)验证请求 < li>IdP使用自己的证书密钥(Key-2)对响应进行签名 < li>IdP使用SP提供的证书密钥(Key-3)加密响应声明 < li>SP使

  • 如何在JMETER中创建一个测试,该测试将: 总共提出100个请求,但是使 每4次请求站点A和 每5次请求站点B

  • 问题内容: 我想知道为什么当我这样依次调用request.get()方法时: 我对所有请求的状态都良好,但是当我在for循环中执行该状态时,例如: 除最后一个请求外,所有请求我都得到400(错误)。 附加信息:SO上有一个相关的问题,其中提到了两种应对这种情况的方法:等待,标题。 在我的情况下 以及标题中,wait不起作用-我不知道在那里提供了什么。 更新:我正在尝试实现的特定版本: 问题答案: