Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERROR_CODE_FAILED_RUNTIME_CHECK & ERROR_CODE_DECODER_INIT_FAILED #11133

Open
wisdomtl opened this issue Apr 21, 2023 · 2 comments
Open

ERROR_CODE_FAILED_RUNTIME_CHECK & ERROR_CODE_DECODER_INIT_FAILED #11133

wisdomtl opened this issue Apr 21, 2023 · 2 comments
Assignees

Comments

@wisdomtl
Copy link

wisdomtl commented Apr 21, 2023

Bug

I have a ViewPager2 + Fragment. Each Fragment has an ExoPlayer. There a pool for avoiding recreating ExoPlayer all the time. Everytime ViewPager2 recycle the fragment, i put the player into the pool for reusing. (player.stop() and player.clearMediaItems() will be invoked before get into the pool)

When scrolling the ViewPager2, sometimes the video failed to play with the "ERROR_CODE_FAILED_RUNTIME_CHECK" error. The detail log is the following log1. Then i release the player and create a new one, prepare it and play again, a new error occur (log2).

there is no problem with the video url. (it could be played for most cases)

Is there any good suggestion to avoid this happening?

the phone is HUAWEI Mate 10

android version: 8.1.0

  • log1:
timeline [eventTime=72.64, mediaPos=0.00, window=0, periodCount=1, windowCount=1, reason=PLAYLIST_CHANGED
  period [?]
  window [?, seekable=false, dynamic=true]
]
mediaItem [eventTime=72.64, mediaPos=0.00, window=0, reason=PLAYLIST_CHANGED]
state [eventTime=72.64, mediaPos=0.00, window=0, BUFFERING]
loading [eventTime=72.65, mediaPos=0.00, window=0, period=0, true]
timeline [eventTime=72.65, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
  period [?]
  window [?, seekable=false, dynamic=false]
]
timeline [eventTime=72.84, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
  period [91.07]
  window [91.07, seekable=true, dynamic=false]
]
surfaceSize [eventTime=77.56, mediaPos=0.30, window=0, period=0, 0, 0]
state [eventTime=72.34, mediaPos=0.77, window=0, period=0, IDLE]
timeline [eventTime=72.34, mediaPos=0.00, window=0, periodCount=0, windowCount=0, reason=PLAYLIST_CHANGED
]
positionDiscontinuity [eventTime=72.34, mediaPos=0.00, window=0, reason=REMOVE, PositionInfo:old [mediaItem=0, period=0, pos=766], PositionInfo:new [mediaItem=0, period=-1, pos=0]]
mediaItem [eventTime=72.34, mediaPos=0.00, window=0, reason=PLAYLIST_CHANGED]
tracks [eventTime=72.34, mediaPos=0.00, window=0
]
playWhenReady [eventTime=73.69, mediaPos=0.00, window=0, period=0, true, USER_REQUEST]
isPlaying [eventTime=73.69, mediaPos=0.00, window=0, period=0, true]
videoEnabled [eventTime=72.88, mediaPos=0.00, window=0, period=0]
audioEnabled [eventTime=72.88, mediaPos=0.00, window=0, period=0]
tracks [eventTime=72.88, mediaPos=0.00, window=0, period=0
  group [
    [X] Track:0, id=1, mimeType=video/avc, codecs=avc1.64001F, res=360x640, fps=60.0, supported=YES
  ]
  group [
    [X] Track:0, id=2, mimeType=audio/mp4a-latm, bitrate=64060, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=und, supported=YES
  ]
]
downstreamFormat [eventTime=72.89, mediaPos=0.00, window=0, period=0, id=1, mimeType=video/avc, codecs=avc1.64001F, res=360x640, fps=60.0]
videoDisabled [eventTime=72.36, mediaPos=0.00, window=0, period=0]
audioDisabled [eventTime=72.36, mediaPos=0.00, window=0, period=0]
surfaceSize [eventTime=72.89, mediaPos=0.00, window=0, period=0, 1039, 1848]
videoDecoderInitialized [eventTime=72.93, mediaPos=0.00, window=0, period=0, OMX.hisi.video.decoder.avc]
videoInputFormat [eventTime=72.93, mediaPos=0.00, window=0, period=0, id=1, mimeType=video/avc, codecs=avc1.64001F, res=360x640, fps=60.0]
downstreamFormat [eventTime=72.93, mediaPos=0.00, window=0, period=0, id=2, mimeType=audio/mp4a-latm, bitrate=64060, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=und]
audioDecoderInitialized [eventTime=72.94, mediaPos=0.00, window=0, period=0, OMX.google.aac.decoder]
audioInputFormat [eventTime=72.94, mediaPos=0.00, window=0, period=0, id=2, mimeType=audio/mp4a-latm, bitrate=64060, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=und]
state [eventTime=72.96, mediaPos=0.00, window=0, period=0, READY]
videoDecoderReleased [eventTime=72.45, mediaPos=0.00, window=0, period=0, OMX.hisi.video.decoder.avc]
audioDecoderReleased [eventTime=72.45, mediaPos=0.00, window=0, period=0, OMX.google.aac.decoder]
state [eventTime=72.99, mediaPos=0.00, window=0, period=0, BUFFERING]
videoSize [eventTime=73.00, mediaPos=0.00, window=0, period=0, 360, 640]
renderedFirstFrame [eventTime=73.00, mediaPos=0.00, window=0, period=0, Surface(name=android.graphics.SurfaceTexture@f271f04)  (appName =null) ( mSurfaceControllerIsValid =true) (mNativeObject  =76f87cd000)/@0x339ced]
surfaceSize [eventTime=73.01, mediaPos=0.00, window=0, period=0, 1080, 1920]
state [eventTime=73.01, mediaPos=0.00, window=0, period=0, READY]
loading [eventTime=73.06, mediaPos=0.00, window=0, period=0, false]
ClipPlayer.initView() set play listener
playWhenReady [eventTime=75.18, mediaPos=1.39, window=0, period=0, false, USER_REQUEST]
isPlaying [eventTime=75.18, mediaPos=1.39, window=0, period=0, false]
ClipPlayer.load() name=http://192.168.2.21:8083/movie/m3u8/25d72b1439/recommend.mp4 name=我是好人王
timeline [eventTime=73.89, mediaPos=0.00, window=0, periodCount=1, windowCount=1, reason=PLAYLIST_CHANGED
  period [?]
  window [?, seekable=false, dynamic=true]
]
mediaItem [eventTime=73.89, mediaPos=0.00, window=0, reason=PLAYLIST_CHANGED]
state [eventTime=73.89, mediaPos=0.00, window=0, BUFFERING]
loading [eventTime=73.90, mediaPos=0.00, window=0, period=0, true]
timeline [eventTime=73.90, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
  period [?]
  window [?, seekable=false, dynamic=false]
]
timeline [eventTime=73.96, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
  period [116.40]
  window [116.40, seekable=true, dynamic=false]
]
videoEnabled [eventTime=73.97, mediaPos=0.00, window=0, period=0]
audioEnabled [eventTime=73.97, mediaPos=0.00, window=0, period=0]
tracks [eventTime=73.97, mediaPos=0.00, window=0, period=0
  group [
    [X] Track:0, id=2, mimeType=video/avc, codecs=avc1.640032, res=1080x1920, fps=30.0, supported=YES
  ]
  group [
    [X] Track:0, id=1, mimeType=audio/mp4a-latm, bitrate=64053, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=und, supported=YES
  ]
]
downstreamFormat [eventTime=73.98, mediaPos=0.00, window=0, period=0, id=2, mimeType=video/avc, codecs=avc1.640032, res=1080x1920, fps=30.0]
surfaceSize [eventTime=79.02, mediaPos=0.24, window=0, period=0, 0, 0]
state [eventTime=79.29, mediaPos=0.30, window=0, period=0, IDLE]
timeline [eventTime=79.29, mediaPos=0.00, window=0, periodCount=0, windowCount=0, reason=PLAYLIST_CHANGED
]
positionDiscontinuity [eventTime=79.29, mediaPos=0.00, window=0, reason=REMOVE, PositionInfo:old [mediaItem=0, period=0, pos=300], PositionInfo:new [mediaItem=0, period=-1, pos=0]]
mediaItem [eventTime=79.29, mediaPos=0.00, window=0, reason=PLAYLIST_CHANGED]
tracks [eventTime=79.29, mediaPos=0.00, window=0
]
playWhenReady [eventTime=74.58, mediaPos=0.00, window=0, period=0, true, USER_REQUEST]
isPlaying [eventTime=74.58, mediaPos=0.00, window=0, period=0, true]
videoDisabled [eventTime=79.30, mediaPos=0.00, window=0, period=0]
audioDisabled [eventTime=79.30, mediaPos=0.00, window=0, period=0]
surfaceSize [eventTime=74.08, mediaPos=0.00, window=0, period=0, 1038, 1848]
videoDecoderInitialized [eventTime=74.08, mediaPos=0.00, window=0, period=0, OMX.hisi.video.decoder.avc]
videoInputFormat [eventTime=74.08, mediaPos=0.00, window=0, period=0, id=2, mimeType=video/avc, codecs=avc1.640032, res=1080x1920, fps=30.0]
downstreamFormat [eventTime=74.08, mediaPos=0.00, window=0, period=0, id=1, mimeType=audio/mp4a-latm, bitrate=64053, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=und]
audioDecoderInitialized [eventTime=74.11, mediaPos=0.00, window=0, period=0, OMX.google.aac.decoder]
audioInputFormat [eventTime=74.11, mediaPos=0.00, window=0, period=0, id=1, mimeType=audio/mp4a-latm, bitrate=64053, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=und]
state [eventTime=74.13, mediaPos=0.00, window=0, period=0, READY]
videoDecoderReleased [eventTime=79.38, mediaPos=0.00, window=0, period=0, OMX.hisi.video.decoder.avc]
audioDecoderReleased [eventTime=79.38, mediaPos=0.00, window=0, period=0, OMX.google.aac.decoder]
videoDisabled [eventTime=74.19, mediaPos=0.00, window=0, period=0]
audioDisabled [eventTime=74.20, mediaPos=0.00, window=0, period=0]
videoDecoderReleased [eventTime=74.26, mediaPos=0.00, window=0, period=0, OMX.hisi.video.decoder.avc]
audioDecoderReleased [eventTime=74.26, mediaPos=0.00, window=0, period=0, OMX.google.aac.decoder]
playerFailed [eventTime=74.26, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_FAILED_RUNTIME_CHECK
  com.google.android.exoplayer2.ExoPlaybackException: Unexpected runtime error
      at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:628)
      at android.os.Handler.dispatchMessage(Handler.java:105)
      at android.os.Looper.loop(Looper.java:166)
      at android.os.HandlerThread.run(HandlerThread.java:65)
  Caused by: java.lang.IllegalArgumentException
      at android.media.MediaCodec.native_setSurface(Native Method)
      at android.media.MediaCodec.setOutputSurface(MediaCodec.java:1975)
      at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.setOutputSurface(SynchronousMediaCodecAdapter.java:189)
      at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:1500)
      at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutput(MediaCodecVideoRenderer.java:694)
      at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:632)
      at com.google.android.exoplayer2.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:1566)
      at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:1530)
      at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:1505)
      at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:533)
      at android.os.Handler.dispatchMessage(Handler.java:105) 
      at android.os.Looper.loop(Looper.java:166) 
      at android.os.HandlerThread.run(HandlerThread.java:65) 

ERROR_CODE_DECODER_INIT_FAILED

  • log2:
 playWhenReady [eventTime=0.01, mediaPos=0.00, window=0, true, USER_REQUEST]
 surfaceSize [eventTime=0.02, mediaPos=0.00, window=0, 1080, 1848]
 timeline [eventTime=0.03, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
   period [?]
   window [?, seekable=false, dynamic=false]
 ]
 loading [eventTime=0.03, mediaPos=0.00, window=0, period=0, true]
 surfaceSize [eventTime=197.69, mediaPos=0.21, window=0, period=0, 1080, 1920]
 videoSize [eventTime=197.71, mediaPos=0.21, window=0, period=0, 360, 640]
 renderedFirstFrame [eventTime=197.71, mediaPos=0.21, window=0, period=0, Surface(name=android.graphics.SurfaceTexture@9216947)  (appName =null) ( mSurfaceControllerIsValid =true) (mNativeObject  =76d533c000)/@0x537a574]
 timeline [eventTime=0.11, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
   period [112.66]
   window [112.66, seekable=true, dynamic=false]
 ]
 videoEnabled [eventTime=0.12, mediaPos=0.00, window=0, period=0]
 audioEnabled [eventTime=0.12, mediaPos=0.00, window=0, period=0]
 tracks [eventTime=0.12, mediaPos=0.00, window=0, period=0
   group [
     [X] Track:0, id=2, mimeType=video/avc, codecs=avc1.64001F, res=480x854, fps=30.0, supported=YES
   ]
   group [
     [X] Track:0, id=1, mimeType=audio/mp4a-latm, bitrate=64058, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=und, supported=YES
   ]
 ]
 downstreamFormat [eventTime=0.12, mediaPos=0.00, window=0, period=0, id=2, mimeType=video/avc, codecs=avc1.64001F, res=480x854, fps=30.0]
 videoDisabled [eventTime=0.30, mediaPos=0.00, window=0, period=0]
 audioDisabled [eventTime=0.30, mediaPos=0.00, window=0, period=0]
playerFailed [eventTime=0.31, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_DECODER_INIT_FAILED
  com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(2, null, null, video/avc, avc1.64001F, -1, null, [480, 854, 30.0], [-1, -1]), format_supported=YES
      at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:578)
      at android.os.Handler.dispatchMessage(Handler.java:105)
      at android.os.Looper.loop(Looper.java:166)
      at android.os.HandlerThread.run(HandlerThread.java:65)
  Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.hisi.video.decoder.avc, Format(2, null, null, video/avc, avc1.64001F, -1, null, [480, 854, 30.0], [-1, -1])
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1029)
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:537)
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1453)
      at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:917)
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:954)
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:769)
      at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1007)
      at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:502)
      at android.os.Handler.dispatchMessage(Handler.java:105) 
      at android.os.Looper.loop(Looper.java:166) 
      at android.os.HandlerThread.run(HandlerThread.java:65) 
  Caused by: java.lang.IllegalArgumentException
      at android.media.MediaCodec.native_configure(Native Method)
      at android.media.MediaCodec.configure(MediaCodec.java:1956)
      at android.media.MediaCodec.configure(MediaCodec.java:1885)
      at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter$Factory.createAdapter(SynchronousMediaCodecAdapter.java:51)
      at com.google.android.exoplayer2.mediacodec.DefaultMediaCodecAdapterFactory.createAdapter(DefaultMediaCodecAdapterFactory.java:113)
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1099)
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1010)
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:537) 
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1453) 
      at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:917) 
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:954) 
      at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:769) 
      at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1007) 
      at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:502) 
      at android.os.Handler.dispatchMessage(Handler.java:105) 
      at android.os.Looper.loop(Looper.java:166) 
      at android.os.HandlerThread.run(HandlerThread.java:65) 
]
@amrbrkt
Copy link

amrbrkt commented Oct 2, 2023

Hi, I have a similar use case with viewpager2 and I see same ERROR_CODE_DECODER_INIT_FAILED errors, any updates regarding this one?

@maodeyu180
Copy link

set DefaultRenderersFactory(context).setEnableDecoderFallback(true) ;
make the video play normal, but this setting may use soft decoder

@christosts christosts assigned microkatz and unassigned christosts Feb 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants