Open pawaom opened 6 days ago
Hi @pawaom The team is still working on this API and specifically on seeking. This bug should be fixed in the later release. Please provide logcat with an error you see.
Please keep in mind that CompositionPlayer
is still under active development and work-in-progress and @RestrictTo to indicate that this API should not be used outside of the library
Thanks for the reply Here is the logcat as requested, it is the behavior similar to the one shared in the video crash when we seek the video,
can this be tagged as enhancement so that we can track the development
it is reproduced in the Demo Composition app just run the app and seek the video it will cause the error
2024-06-24 09:47:20.363 6203-6814 MediaCodec org.own.media14beta E Codec reported err 0x80000000/UNKNOWN_ERROR, actionCode 0, while in state 7/FLUSHING
2024-06-24 09:47:20.389 6203-6704 ExoPlayerImplInternal org.own.media14beta
E Playback error (Ask Gemini)
androidx.media3.exoplayer.ExoPlaybackException: Unexpected runtime error
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:725)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.media.MediaCodec$CodecException:
at android.media.MediaCodec.native_flush(Native Method)
at android.media.MediaCodec.flush(MediaCodec.java:2504)
at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter.flush(AsynchronousMediaCodecAdapter.java:247)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:960)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:953)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReinitializeCodec(MediaCodecRenderer.java:916)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onPositionReset(MediaCodecRenderer.java:755)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onPositionReset(MediaCodecVideoRenderer.java:651)
at androidx.media3.exoplayer.BaseRenderer.resetPosition(BaseRenderer.java:202)
at androidx.media3.exoplayer.BaseRenderer.resetPosition(BaseRenderer.java:195)
at androidx.media3.exoplayer.ExoPlayerImplInternal.resetRendererPosition(ExoPlayerImplInternal.java:1491)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToPeriodPosition(ExoPlayerImplInternal.java:1469)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToPeriodPosition(ExoPlayerImplInternal.java:1408)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToInternal(ExoPlayerImplInternal.java:1378)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:571)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
2024-06-24 09:47:20.402 6203-6814 MediaCodec org.own.media14beta E flush() is valid only at Executing states; currently at Released state
2024-06-24 09:47:20.419 6203-6704 ExoPlayerImplInternal org.own.media14beta E Disable failed. (Ask Gemini)
java.lang.IllegalStateException: flush() is valid only at Executing states; currently at Released state
at android.media.MediaCodec.native_flush(Native Method)
at android.media.MediaCodec.flush(MediaCodec.java:2504)
at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter.flush(AsynchronousMediaCodecAdapter.java:247)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:960)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:953)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:780)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:709)
at androidx.media3.exoplayer.BaseRenderer.disable(BaseRenderer.java:220)
at androidx.media3.exoplayer.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1850)
at androidx.media3.exoplayer.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:1571)
at androidx.media3.exoplayer.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:1528)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:727)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
2024-06-24 09:47:20.474 6203-6203 EventLogger org.own.media14beta E playerFailed [eventTime=24.75, mediaPos=28.14, window=0, period=1, errorCode=ERROR_CODE_FAILED_RUNTIME_CHECK (Ask Gemini)
androidx.media3.exoplayer.ExoPlaybackException: Unexpected runtime error
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:725)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.media.MediaCodec$CodecException:
at android.media.MediaCodec.native_flush(Native Method)
at android.media.MediaCodec.flush(MediaCodec.java:2504)
at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter.flush(AsynchronousMediaCodecAdapter.java:247)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:960)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:953)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReinitializeCodec(MediaCodecRenderer.java:916)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onPositionReset(MediaCodecRenderer.java:755)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onPositionReset(MediaCodecVideoRenderer.java:651)
at androidx.media3.exoplayer.BaseRenderer.resetPosition(BaseRenderer.java:202)
at androidx.media3.exoplayer.BaseRenderer.resetPosition(BaseRenderer.java:195)
at androidx.media3.exoplayer.ExoPlayerImplInternal.resetRendererPosition(ExoPlayerImplInternal.java:1491)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToPeriodPosition(ExoPlayerImplInternal.java:1469)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToPeriodPosition(ExoPlayerImplInternal.java:1408)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToInternal(ExoPlayerImplInternal.java:1378)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:571)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
]
2024-06-24 09:47:20.583 6203-6203 CompPreviewActivity org.own.media14beta E Preview error (Ask Gemini)
androidx.media3.common.PlaybackException: error from player 0
at androidx.media3.transformer.CompositionPlayer.maybeUpdatePlaybackError(CompositionPlayer.java:728)
at androidx.media3.transformer.CompositionPlayer.access$1200(CompositionPlayer.java:94)
at androidx.media3.transformer.CompositionPlayer$PlayerListener.onPlayerError(CompositionPlayer.java:889)
at androidx.media3.exoplayer.ExoPlayerImpl.lambda$updatePlaybackInfo$16(ExoPlayerImpl.java:2128)
at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda14.invoke(D8$$SyntheticClass:0)
at androidx.media3.common.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:339)
at androidx.media3.common.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:223)
at androidx.media3.common.util.ListenerSet$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
at androidx.media3.common.util.ListenerSet.flushEvents(ListenerSet.java:245)
at androidx.media3.exoplayer.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:2189)
at androidx.media3.exoplayer.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:2023)
at androidx.media3.exoplayer.ExoPlayerImpl.lambda$new$1$androidx-media3-exoplayer-ExoPlayerImpl(ExoPlayerImpl.java:350)
at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda23.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8913)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: androidx.media3.exoplayer.ExoPlaybackException: Unexpected runtime error
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:725)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.media.MediaCodec$CodecException:
at android.media.MediaCodec.native_flush(Native Method)
at android.media.MediaCodec.flush(MediaCodec.java:2504)
at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter.flush(AsynchronousMediaCodecAdapter.java:247)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:960)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:953)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReinitializeCodec(MediaCodecRenderer.java:916)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onPositionReset(MediaCodecRenderer.java:755)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onPositionReset(MediaCodecVideoRenderer.java:651)
at androidx.media3.exoplayer.BaseRenderer.resetPosition(BaseRenderer.java:202)
at androidx.media3.exoplayer.BaseRenderer.resetPosition(BaseRenderer.java:195)
at androidx.media3.exoplayer.ExoPlayerImplInternal.resetRendererPosition(ExoPlayerImplInternal.java:1491)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToPeriodPosition(ExoPlayerImplInternal.java:1469)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToPeriodPosition(ExoPlayerImplInternal.java:1408)
at androidx.media3.exoplayer.ExoPlayerImplInternal.seekToInternal(ExoPlayerImplInternal.java:1378)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:571)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
Hello @pawaom,
it seems the error is from MediaCodec flush, which rarely happens to us. I wonder
media3_version = "1.4.0-alpha02"
It is reproduced all the time I am testing the demo composition app
will try it in the demo main app
Android Version 14
Tablet: Samsung Galaxy Tab A 7 Lite Model name: SM - T 225
I did a quick test with exoplayer and the video plays correctly here is the video
https://github.com/androidx/media/assets/28686824/004a6dec-508d-43f2-b048-e1c1b06c3add
Thanks! We'll investigate
CompositionPlayer crashes when we seek the player in demo App using media3_version = "1.4.0-alpha02"
Here is the example video
https://github.com/androidx/media/assets/28686824/b961885b-2360-4215-adad-4271950f106e
After we seek the video it crashes with the error displayed as toast and the player stops playing.
How can we prevent this error and keep the video playing.