ExoPlayerImplInternal:停止失败。 java.lang.IllegalStateException - API 22 级及以下

ExoPlayerImplInternal: Stop failed. java.lang.IllegalStateException - on API Level 22 and below

我在设备 Android 22 Api 及以下设备上遇到高清 2688x1520 和比特率 5812 的 HLS 流的问题 - 流无法播放。我使用 ExoPlayer 版本 2.9.6(也使用 2.10.4 进行测试)。在其他设备和其他相机上 - 一切正常。请帮我解决这个问题。

短日志:

D: NoSupport [codec.profileLevel, avc1.4D4032, video/avc] [OMX.google.h264.decoder, video/avc] [generic_x86_64, Android SDK built for x86_64, unknown, 22]
I: Using client-side OMX mux.
E: [OMX.google.h264.decoder] storeMetaDataInBuffers failed w/ err -1010
E: [OMX.google.h264.decoder] ERROR(0x80001001)
E: signalError(omxError 0x80001001, internalError -2147483648)
E: Codec reported err 0x80001001, actionCode 0, while in state 6
E: Internal runtime error.
    java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
        at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:1033)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1287)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:663)
        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:98)
        at android.os.Looper.loop(Looper.java:135)
        at android.os.HandlerThread.run(HandlerThread.java:61)
E: Stop failed.
    java.lang.IllegalStateException
        at android.media.MediaCodec.native_stop(Native Method)
        at android.media.MediaCodec.stop(MediaCodec.java:628)
        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:98)
        at android.os.Looper.loop(Looper.java:135)
        at android.os.HandlerThread.run(HandlerThread.java:61)
D: java.lang.IllegalStateException

Link 关于 github 的问题以及完整的错误报告

https://github.com/google/ExoPlayer/issues/6433

NoSupport [codec.profileLevel, avc1.4D4032, video/avc]

您的视频使用这些特定设备不支持的 H.264 Main Profile (avc1.4D)。 minimum requirement for Main Profile is 6.0+. You could check if there's another software decoder available (see MediaCodecSelector), 尽管 ExoPlayer 会选择最好的。