ExoPlayer: Nexus 5X with Android 8.1.0 can not play any Widevine DRM video

Issue description

Nexus 5X with Android 8.1.0 (OPM3.171019.016) can not play any Widevine DRM video.

Reproduction steps

Open ExoPlayer demo app. Following test cases fail with the same error:

  • Widevine DASH Policy Tests (GTS)
    • All
  • Widevine HDCP Capabilities Tests
    • All
  • Widevine DASH: MP4, H264, WebM, VP9, MP4, H265
    • All secure

Error:

03-22 11:43:25.087 media   569 32490 I WVCdm   : CdmEngine::AddKey
03-22 11:43:25.152 media   569 32490 E WVCdm   : CryptoSession::LoadKeys: OEMCrypto_LoadKeys error=10036
03-22 11:43:25.152 media   569 32490 E WVCdm   : CdmEngine::AddKey: keys not added, result = 99
03-22 11:43:25.152 media   569 32490 W android.hardware.drm@1.0-impl: Unable to convert legacy status: -2902, defaulting to UNKNOWN
03-22 11:43:25.152 10112 17627 17793 E MediaDrm-JNI: Illegal state exception: Failed to handle key response: General DRM error (-2000)
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: Playback error.
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: com.google.android.exoplayer2.ExoPlaybackException
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: 	at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.shouldWaitForKeys(MediaCodecRenderer.java:836)
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: 	at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:733)
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: 	at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:568)
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: 	at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:522)
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: 	at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:305)
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: 	at android.os.Handler.dispatchMessage(Handler.java:102)
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: 	at android.os.Looper.loop(Looper.java:164)
03-22 11:43:25.158 10112 17627 17793 E ExoPlayerImplInternal: 	at android.os.HandlerThread.run(HandlerThread.java:65)

Link to test content

Use ExoPlayer demo as mentioned in Reproduction steps.

Version of ExoPlayer being used

v2.7.0

Device(s) and version(s) of Android being used

Nexus 5X Android 8.1.0 (OPM3.171019.016).

Tested also with Pixel 2XL Android 8.1.0 (OPM1.171019.021): Widevine VoD from demo app run fine, but livestreams are black screen (https://github.com/google/ExoPlayer/issues/3596). No other device/version seems to be affected (both VoD and livestreams work fine on Pixel 1 Android 8.1.0, Samsung S7 Android 7.0, Nexus 5 Android 6.0.1).

A full bug report captured from the device

Attached bugreport-bullhead-OPM3.171019.016-2018-03-22-11-44-29.zip bugreport-bullhead-OPM3.171019.016-2018-03-22-11-44-29.zip

Other information

Seems to be the same issue as https://github.com/google/ExoPlayer/issues/1404 (at least OEMCrypto_LoadKeys error=10036 is mentioned in https://github.com/google/ExoPlayer/issues/1404#issuecomment-221419893). Together with https://github.com/google/ExoPlayer/issues/3596 these are 2 biggest issues we have in production now. Google phone users basically can not watch DRM videos.

We have the device in question, it’s 100% reproducible on a clean device (just delivered from store) and I can extract more information if needed (rooting should also be possible).

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 17 (3 by maintainers)

Most upvoted comments

This sounds unfortunate. I’m not sure there’s much we can do in this issue tracker though. It sounds like a device problem rather than a problem with ExoPlayer, and there’s not going to be anything we can do to work around it. I propose closing this issue unless there’s something we can actually do on the ExoPlayer side. If you have any suggestions, please let us know!