google / ExoPlayer

An extensible media player for Android
Apache License 2.0
21.62k stars 6k forks source link

Exoplayer Freezes in between of playing Widevine Encrypted DASH Media #5649

Closed kushalgupta0565 closed 5 years ago

kushalgupta0565 commented 5 years ago

I am using Android TV Box whose specs are:

In Exoplayer version 2.9.2 i am playing offline 2k widevine encrypted videos with offline license, But at random position the player screen got freeze, the last time video suddenly freezed after 1 hour 11 minutes and its logs are :

2019-03-19 12:45:19.583 4718-6684/myPackageName: E/ACodec: signalError(omxError 0x80001001, internalError -2147483648) 2019-03-19 12:45:19.583 4718-6688/myPackageName: E/ACodec: OMX/mediaserver died, signalling error! 2019-03-19 12:45:19.583 4718-6688/myPackageName: E/ACodec: signalError(omxError 0x8000100d, internalError -32) 2019-03-19 12:45:19.583 4718-6688/myPackageName: E/MediaCodec: Codec reported err 0xffffffe0, actionCode 0, while in state 6 2019-03-19 12:45:19.583 4718-6684/myPackageName: E/ACodec: signalError(omxError 0x80001001, internalError -2147483648) 2019-03-19 12:45:19.583 4718-6683/myPackageName: E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 6 2019-03-19 12:45:19.585 4718-6684/myPackageName: E/ACodec: OMX/mediaserver died, signalling error! 2019-03-19 12:45:19.586 4718-6684/myPackageName: E/ACodec: signalError(omxError 0x8000100d, internalError -32) 2019-03-19 12:45:19.590 4718-6684/myPackageName: E/ACodec: signalError(omxError 0x80001001, internalError -2147483648) 2019-03-19 12:45:19.590 4718-6684/myPackageName: E/ACodec: signalError(omxError 0x80001001, internalError -2147483648) 2019-03-19 12:45:19.594 4718-6683/myPackageName: E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0 2019-03-19 12:45:19.595 4718-6683/myPackageName: E/MediaCodec: Codec reported err 0xffffffe0, actionCode 0, while in state 0 2019-03-19 12:45:19.595 4718-6683/myPackageName: E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0 2019-03-19 12:45:19.595 4718-6683/myPackageName: E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 0 2019-03-19 12:45:19.596 4718-6667/myPackageName: E/ExoPlayerImplInternal: Internal runtime error. java.lang.IllegalStateException at android.media.MediaCodec.native_dequeueInputBuffer(Native Method) at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2635) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:887) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:664) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:536) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:65) 2019-03-19 12:45:19.619 4718-6667/myPackageName: E/ExoPlayerImplInternal: Stop failed. java.lang.IllegalStateException at android.media.MediaCodec.native_stop(Native Method) at android.media.MediaCodec.stop(MediaCodec.java:2084) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:608) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.releaseCodec(MediaCodecVideoRenderer.java:508) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:562) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:377) at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:153) at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:983) at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:771) at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:742) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:358) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:65) 2019-03-19 12:45:19.646 4718-6667/myPackageName: E/ExoPlayerImplInternal: Stop failed. java.lang.IllegalStateException at android.media.MediaCodec.native_stop(Native Method) at android.media.MediaCodec.stop(MediaCodec.java:2084) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:608) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:562) at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.onDisabled(MediaCodecAudioRenderer.java:542) at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:153) at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:983) at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:771) at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:742) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:358) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:65) 2019-03-19 12:45:19.650 4718-4718/myPackageName: E/CinemaPlayerException: PlayerEventsListener--> onPlayerError()--> java.lang.IllegalStateException

Here are the details of my video file :

MPD Path: https://d2r9ckaexvxklh.cloudfront.net/HnD_PART_1_420.mpd DRM_SCHEME : Widevine

tonihei commented 5 years ago

Just for verification: Does that always happen at 1 hour and 11 minutes? Or was that just an example?

Based on the logs the Android mediaserver died and that's why no further samples could be decoded. That is definitely not supposed to happen, but sounds more like a platform/device issue than an ExoPlayer issue.

kushalgupta0565 commented 5 years ago

It was just an example. I am facing this issue at random interval.

And, in a different device i.e Android Projector same issue occur at different interval, it specs are

tonihei commented 5 years ago

I tried to play the provided example stream on another device and the media stream looks broken to me. I get a lot of complaints from the platform AudioTrack about timestamp mismatches, indicating that the timestamps in the stream are wrong. In addition to that, the video shows pixelation artefacts which may be due to decryption issues.

The "mediaserver died" error you are seeing on the mentioned devices indicates that the system media process crashed which may be due to the broken media. It's still a platform issue we can't do much about, but if it's indeed caused by problematic input, the issue can probably be prevented by fixing the media.

kushalgupta0565 commented 5 years ago

Thanks tonihei, for the reply. I will look forward in it and update here.

kushalgupta0565 commented 5 years ago

I tested the same media file on 11 devices and concluded that it is the issue with Amlogic S905X2, S905W and T968 CPU, as the same media is working fine on Rockchip RK3399 & MediaTek MT6737M CPU.