在我的应用程序中,我使用exoplayer播放DASH videostreams。这些流使用WIDEVINE进行DRM保护。我的DashManifest有多个密钥。一个密钥用于SD流,一个密钥用于HD流。当我在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到底是什么意思?
发布于 2019-02-21 18:29:44
此错误通常与设备特定错误相关,不幸的是,这些错误通常需要设备供应商提供信息和修复。
亚马逊论坛也报道了这一点(可能也是你或你同事的报告):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
https://stackoverflow.com/questions/54801180
复制相似问题