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

时间:2019-02-21 07:09:53

标签: android exoplayer drm amazon-fire-tv widevine

在我的应用中,我正在使用exoplayer播放DASH视频流。流受WIDEVINE保护DRM。我的DashManifest有多个键。标清一键,高清流一键。当我在FireTV上开始播放视频时,出现此错误:

xoPlayerImplInternal: Playback error. com.google.android.exoplayer2.ExoPlaybackException at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.shouldWaitForKeys(MediaCodecRenderer.java:896) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:783) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:606) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:518) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:301) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:135) at android.os.HandlerThread.run(HandlerThread.java:61) Caused by: com.google.android.exoplayer2.drm.DrmSession$DrmSessionException: android.media.MediaDrm$MediaDrmStateException: Failed to get key request: DRM vendor-defined error: -2998 at com.google.android.exoplayer2.drm.DefaultDrmSession.onError(DefaultDrmSession.java:422) at com.google.android.exoplayer2.drm.DefaultDrmSession.onKeysError(DefaultDrmSession.java:417) at com.google.android.exoplayer2.drm.DefaultDrmSession.postKeyRequest(DefaultDrmSession.java:368) at com.google.android.exoplayer2.drm.DefaultDrmSession.doLicense(DefaultDrmSession.java:300) at com.google.android.exoplayer2.drm.DefaultDrmSession.acquire(DefaultDrmSession.java:162) at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.acquireSession(DefaultDrmSessionManager.java:558) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:935) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:522) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:589) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:518) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:301) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:135) at android.os.HandlerThread.run(HandlerThread.java:61)

我不知道此设备或我的配置有什么问题。有人可以向我解释Failed to get key request: DRM vendor-defined error: -2998的确切含义吗?

1 个答案:

答案 0 :(得分:0)

此错误通常与特定于设备的错误有关,不幸的是,经常需要设备供应商提供信息和修复程序。

在亚马逊论坛上也已经报道过这一特定事件(也许也是您或您的同事的报告):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