dudi
dudi

Reputation: 5732

Widevine DRM - Error by requesting multiple DRM Keys on FireTV

In my app I'm using exoplayer to play out DASH videostreams. The streams are DRM protected with WIDEVINE. My DashManifest has multiple keys. One key for SD and one key for HD stream. When I start the video on a FireTV I've getting this error:

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)

I'have no idea what is wrong with this device or my configuration. Can somebody explain me what Failed to get key request: DRM vendor-defined error: -2998 exactly mean?

Upvotes: 0

Views: 1899

Answers (1)

Mick
Mick

Reputation: 25491

This error is generally associated with device specific errors, which unfortunately often require the device supplier to provide information and fixes.

This particular one has been reported in the Amazon forums also (maybe it is you or your colleagues's report also): https://forums.developer.amazon.com/questions/187540/error-by-requesting-drm-keys-1.html

You can see there that the problem even seems to be specific to a particular generation of the FireTV devices.

I think it might be useful for you to join and track that conversation as a device supplier will often prioritise problems that affect multiple people.

As an aside, the multiple key note may not be related to the problem at all, but there are some different interpretations of how this should be handled in ExoPlayer, and there is an open issue (at the time of writing) with multiple keys and offline playback which contains a very good overview (basically some implementations assume a DRM server will return all keys even if only one track is requested and this is not necessarily a correct assumption): https://github.com/google/ExoPlayer/issues/3872#issuecomment-367274776

Upvotes: 0

Related Questions