0

在我的应用程序中,我使用 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究竟是什么意思吗?

4

1 回答 1

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

于 2019-02-21T10:29:44.347 回答