在我的应用中,我正在使用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
的确切含义吗?
答案 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