google / ExoPlayer

This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
https://developer.android.com/media/media3/exoplayer
Apache License 2.0
21.71k stars 6.02k forks source link

Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error #8473

Open knixer opened 3 years ago

knixer commented 3 years ago

The error message comes up sometimes when I try to access a video displayed in my Flutter application. I am using Chewie (https://pub.dev/packages/chewie) when rendering my videos. The video is an mp4 file and works most of the time.

Full error message: Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, null, -1, null, [1280, 720, 29.973475], [-1, -1]), format_supported=YES

It is not evident to me how the problem can be reproduced because it happens arbitrarily.

I don't know the ExoPlayer version number. But I downloaded Chewie and video_player yesterday so I should have the latest. If I can find the version number in the bug report let me know. The expected behavior is no error message and a working video Device: Samsung SM-J105H Android version 5.1.1

Here is info from the bugReport. I do not know what information is of use...

01-18 12:22:38.159   770  1228 D InputMethodManagerService: windowGainedFocus mCurrentFocusedUserId - 0 and mSecureKeypadEnabled-false
01-18 12:22:38.169  1691  1691 D InputMethodFrameWorkUtils: InputMethodSubtype is found as local:sv
01-18 12:22:38.169  1691  1691 D InputMethodFrameWorkUtils: InputMethodSubtype is set as local:sv
01-18 12:22:38.169  9355  9400 I flutter : singleTestscreenItem :: Chewie Error: Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, null, -1, null, [1280, 720, 29.973475], [-1, -1]), format_supported=YES
01-18 12:22:38.169  1691  1691 W ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1748 android.content.ContextWrapper.sendBroadcast:392 com.sec.android.inputmethod.inputmethodframework.InputMethodFrameWorkUtils.setCurrentInputMethodSubtype:49 com.ime.framework.common.InputManagerImpl.finishInput:5031 com.sec.android.inputmethod.SamsungKeypad.onFinishInput:682 
01-18 12:22:38.179 14816 14816 W linker  : libliger.so: unused DT entry: type 0x6ffffef5 arg 0x4b4c
01-18 12:22:38.179  1691  1691 D SamsungIME: onStartInput: No inputType, No imeOption, isInputViewShown = false, isExtractViewShown = false, isShowInputRequested = false, isConfigChanged = false
01-18 12:22:38.179  9497  9497 D StatusBar: getNumberOfActiveSim: 1
01-18 12:22:38.179   770   848 V WindowStateAnimator: Finishing drawing window Window{c0d5266 u0 d0 SurfaceView}: mDrawState=READY_TO_SHOW
01-18 12:22:38.189 14816 14816 W linker  : libliger.so: unused DT entry: type 0x6ffffffe arg 0x4b0c
ojw28 commented 3 years ago

Please provide a complete bug report captured with adb bugreport shortly after reproducing the issue, as requested in the issue template. Thanks!

knixer commented 3 years ago

Hi, you can see the error in line 4 from the bug report I submitted.

Please provide a complete bug report captured with adb bugreport shortly after reproducing the issue, as requested in the issue template. Thanks!

ojw28 commented 3 years ago

If that's all Chewie is logging then I think you'll need to either:

  1. Report the issue to whoever maintains Chewie, since they're not logging sufficient information for us to diagnose what happened (e.g., the full stack trace of the error). It's likely you'll need to ask them to turn on some more detailed logging.
  2. Reproduce the issue using our demo app, which will log more useful diagnostic information.

It should also be noted that there's often useful context in bug reports aside from the line at which the error is logged, which is why we ask for a full bug report. Omitting information requested in the issue template makes it harder for us to help you.

knixer commented 3 years ago

Thanks, but I found some new debug information when the phone is directly attached to the computer:


W/MediaCodecRenderer(  958): Failed to initialize decoder: OMX.sprd.h264.decoder
W/MediaCodecRenderer(  958):   android.media.MediaCodec$CodecException: Error 0xfffffc03
W/MediaCodecRenderer(  958):       at android.media.MediaCodec.native_configure(Native Method)
W/MediaCodecRenderer(  958):       at android.media.MediaCodec.configure(MediaCodec.java:577)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.configure(SynchronousMediaCodecAdapter.java:43)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:580)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1143)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1040)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:604)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1470)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:640)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:994)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:844)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:892)
W/MediaCodecRenderer(  958):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:467)
W/MediaCodecRenderer(  958):       at android.os.Handler.dispatchMessage(Handler.java:98)
W/MediaCodecRenderer(  958):       at android.os.Looper.loop(Looper.java:145)
W/MediaCodecRenderer(  958):       at android.os.HandlerThread.run(HandlerThread.java:61)
E/ExoPlayerImplInternal(  958): Playback error
E/ExoPlayerImplInternal(  958):   com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, null, -1, null, [1280, 720, 29.973475], [-1, -1]), format_supported=YES
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:542)
E/ExoPlayerImplInternal(  958):       at android.os.Handler.dispatchMessage(Handler.java:98)
E/ExoPlayerImplInternal(  958):       at android.os.Looper.loop(Looper.java:145)
E/ExoPlayerImplInternal(  958):       at android.os.HandlerThread.run(HandlerThread.java:61)
E/ExoPlayerImplInternal(  958):   Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.sprd.h264.decoder, Format(1, null, null, video/avc, null, -1, null, [1280, 720, 29.973475], [-1, -1])
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1047)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:604)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1470)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:640)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:994)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:844)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:892)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:467)
E/ExoPlayerImplInternal(  958):       ... 3 more
E/ExoPlayerImplInternal(  958):   Caused by: android.media.MediaCodec$CodecException: Error 0xfffffc03
E/ExoPlayerImplInternal(  958):       at android.media.MediaCodec.native_configure(Native Method)
E/ExoPlayerImplInternal(  958):       at android.media.MediaCodec.configure(MediaCodec.java:577)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.configure(SynchronousMediaCodecAdapter.java:43)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:580)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1143)
E/ExoPlayerImplInternal(  958):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1040)
E/ExoPlayerImplInternal(  958):       ... 10 more

Is this information helpful?

If that's all Chewie is logging then I think you'll need to either:

  1. Report the issue to whoever maintains Chewie, since they're not logging sufficient information for us to diagnose what happened (e.g., the full stack trace of the error). It's likely you'll need to ask them to turn on some more detailed logging.
  2. Reproduce the issue using our demo app, which will log more useful diagnostic information.

It should also be noted that there's often useful context in bug reports aside from the line at which the error is logged, which is why we ask for a full bug report. Omitting information requested in the issue template makes it harder for us to help you.

adamkoch commented 3 years ago

I am also seeing similar error in a production Flutter app that uses the video_player package (the chewie flutter package uses video_player as well).

I see a number of crashes in Crashlytics, almost always Samsung devices like Samsung A11.

Unfortunately Flutter itself (or Crashlytics in Flutter) doesn't seem to capture much additional info, it sends me this:

Non-fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.4D401F, -1, null, [720, 480, 25.0], [-1, -1]), format_supported=YES, null, null). Error thrown null.
       at .()

The Flutter video_player package is using a recent, but not latest version of ExoPlayer, v2.12.1: https://github.com/flutter/plugins/blob/2068cce1d06c7cbbc6e241f83af24e67dc72863d/packages/video_player/video_player/android/build.gradle#L47

ajosecueto commented 3 years ago

The same issue here... using flutter

KingAlawaka commented 3 years ago

I am also getting this error. I use fire store videos to play in my application. Some of the videos playing fine and some are getting this error. Any Idea about how to fix this error?

KingAlawaka commented 3 years ago

I was able to fix my error. It was kind of strange but make sense. In my application, I am developing a video application like TikTok and lots of videos are playing and loading. Currently, my testing app has 33 videos and it starts to show this error. I just limit the video limit to 10 and everything works fine. Since my application is mainly videos, once I got the videos from firestore, I initialized the video players but not playing. Depend on the user scroll I play the videos and pause others. I think may be too much load for the app. But I check the performance graphs and memory usage is around 100MB. Hope this help someone. Cheers

md84419 commented 3 years ago

I'm seeing the same. Also Flutter (2.0.6) and with video_player 2.1.1. On a Samsung tablet. The video is scaled and at the edge of the screen. The same video with a different scale and position on the screen plays fine.

md84419 commented 3 years ago

For me, upgrading the OS fixed my issue:

Broken on Samsung Galaxy Tab A7 One UI Core 2.5 Android 10 Kernel 4.19.95-perf-20288130 Build QP1A.190711.020.T505XXS2ATL1 Patch: 1 Dec 2020

Fixed in Samsung Galaxy Tab A7 One UI Core 3.1 Android 11 Kernel 4.19.152-perf-21303446 Build RP1A.200720.012.T505XXU3BUD7 Patch: 1 Mar 2021

abayomiAkanji commented 3 years ago

I had a similar issue on Native development (Kotlin, not Flutter).

For some reasons, calling videoView.player?.release() before initializing videoView.player = SimpleExoPlayer.Builder(context).build() fixed the issue (despite releasing resources in the onDestroy and onDestroyView of the Activity and Fragment respectively.

The implementation seems to check if a player exists and release the resources before re-initializing it at the point of playing a video.

benyaminbeyzaie commented 3 years ago

I have similar issue with samsung A50

MoffatMore commented 3 years ago

Anyone who have managed to resolve this issue?

md84419 commented 3 years ago

As above, for me, upgrading the OS fixed the issue.

MoffatMore commented 3 years ago

Which OS?

md84419 commented 3 years ago

Which OS?

@MoffatMore https://github.com/google/ExoPlayer/issues/8473#issuecomment-843117069

MoffatMore commented 3 years ago

Alright thanks ill consider upgrading OS

reverie-ss commented 3 years ago

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

evicoach commented 3 years ago

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

After what work has been done?

reverie-ss commented 3 years ago

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

After what work has been done?

After am done using videoplayer, for example going to other page, user stops playing, starting some other process. Basically free up the memory!

justatipfromthedeadsequoiatree commented 3 years ago

This link might be useful, best of luck guys

https://stackoverflow.com/questions/58955831/flutter-video-player-dispose

ianvillamia commented 3 years ago

Any fixes for flutter? still not able to find a fix

rohitgarg20 commented 3 years ago

Getting the same issue in react-native also

E/ExoPlayerImplInternal: Renderer error: index=0, type=video, format=Format(2, null, null, video/avc, null, -1, null, [4096, 2130, 24.999998], [-1, -1]), rendererSupport=NO_EXCEEDS_CAPABILITIES
      com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(2, null, null, video/avc, null, -1, null, [4096, 2130, 24.999998], [-1, -1])
        at com.google.android.exoplayer2.BaseRenderer.createRendererException(BaseRenderer.java:359)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:563)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:246)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(2, null, null, video/avc, null, -1, null, [4096, 2130, 24.999998], [-1, -1])
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:867)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
     Caused by: android.media.MediaCodec$CodecException: Error 0xffffec77
        at android.media.MediaCodec.native_configure(Native Method)
        at android.media.MediaCodec.configure(MediaCodec.java:2127)
        at android.media.MediaCodec.configure(MediaCodec.java:2043)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:689)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:928)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:860)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
2021-08-17 19:54:09.849 17604-17604/com.edfora.video.classes E/ExoPlayer Exception: com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(2, null, null, video/avc, null, -1, null, [4096, 2130, 24.999998], [-1, -1])
nazdream commented 3 years ago

Same error here

E/ExoPlayerImplInternal(17215): Playback error
E/ExoPlayerImplInternal(17215):   com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.640028, -1, null, [1920, 1080, 29.253054], [-1, -1]), format_supported=YES
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:555)
E/ExoPlayerImplInternal(17215):       at android.os.Handler.dispatchMessage(Handler.java:103)
E/ExoPlayerImplInternal(17215):       at android.os.Looper.loop(Looper.java:224)
E/ExoPlayerImplInternal(17215):       at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(17215):   Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, Format(1, null, null, video/avc, avc1.640028, -1, null, [1920, 1080, 29.253054], [-1, -1])
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1051)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:606)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1465)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:713)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:998)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:830)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:945)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478)
E/ExoPlayerImplInternal(17215):       ... 3 more
E/ExoPlayerImplInternal(17215):   Caused by: android.media.MediaCodec$CodecException: Error 0xfffffff4
E/ExoPlayerImplInternal(17215):       at android.media.MediaCodec.native_configure(Native Method)
E/ExoPlayerImplInternal(17215):       at android.media.MediaCodec.configure(MediaCodec.java:2023)
E/ExoPlayerImplInternal(17215):       at android.media.MediaCodec.configure(MediaCodec.java:1951)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter$Factory.createAdapter(SynchronousMediaCodecAdapter.java:50)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1137)
E/ExoPlayerImplInternal(17215):       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1044)
E/ExoPlayerImplInternal(17215):       ... 10 more
HaXxanParhar commented 3 years ago

I'm using Exoplayer and PlayerView and sometimes the video does not load and I get this error. I'm sharing this so it might be helpful in debugging. I'm also caching the videos.

Exoplayer version: 2.14 Device: Huawei Honor 7C OS: Android 8.0.0 CPU: Qualcomm Snapdragon 450 Video is loading from the server

Here is the complete stacktrace:

15:58:12.821 24658-25268/com.drudotstech.petsjoinapp E/MediaCodecVideoRenderer: Video codec error java.lang.IllegalStateException at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method) at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2642) at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:100) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1842) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:843) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:945) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:166) at android.os.HandlerThread.run(HandlerThread.java:65) 2021-08-26 15:58:12.827 24658-25268/com.drudotstech.petsjoinapp E/ExoPlayerImplInternal: Playback error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.428020, -1, null, [1080, 1080, 25.0], [-1, -1]), format_supported=YES at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:555) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:166) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: com.google.android.exoplayer2.video.MediaCodecVideoDecoderException: Decoder failed: OMX.qcom.video.decoder.avc at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1410) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:864) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:945) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478) at android.os.Handler.dispatchMessage(Handler.java:104)  at android.os.Looper.loop(Looper.java:166)  at android.os.HandlerThread.run(HandlerThread.java:65)  Caused by: java.lang.IllegalStateException at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method) at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2642) at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:100) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1842) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:843) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:945)  at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478)  at android.os.Handler.dispatchMessage(Handler.java:104)  at android.os.Looper.loop(Looper.java:166)  at android.os.HandlerThread.run(HandlerThread.java:65)  2021-08-26 15:58:12.833 24658-25268/com.drudotstech.petsjoinapp E/ExoPlayerImplInternal: Disable failed. java.lang.IllegalStateException at android.media.MediaCodec.native_flush(Native Method) at android.media.MediaCodec.flush(MediaCodec.java:2126) at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.flush(SynchronousMediaCodecAdapter.java:160) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:912) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:905) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:761) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:483) at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:176) at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1609) at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:1351) at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:1314) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:571) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:166) at android.os.HandlerThread.run(HandlerThread.java:65)

jkojjcn commented 3 years ago

If you use video_player, for each video you should to use: _controller.dispose(); This fix for me.

persadaditya commented 2 years ago

i just handle _controller.dispose(); before super.onDispose(); then add

in android manifest.

if its not you want, just add uniqueKey for videoPlayer

persadaditya commented 2 years ago

i mean add this in your manifest uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"

kqureshi14 commented 2 years ago

any fix here, i am also facing same problem if i want to run more than 4 videos in PageViewBuilder

W/MediaCodecRenderer(18803): Failed to initialize decoder: OMX.Exynos.avc.dec W/MediaCodecRenderer(18803): android.media.MediaCodec$CodecException: Failed to initialize OMX.Exynos.avc.dec, error 0xfffffff4 W/MediaCodecRenderer(18803): at android.media.MediaCodec.native_setup(Native Method) W/MediaCodecRenderer(18803): at android.media.MediaCodec.(MediaCodec.java:1912) W/MediaCodecRenderer(18803): at android.media.MediaCodec.createByCodecName(MediaCodec.java:1890)

md84419 commented 2 years ago

This issue has reappeared in Android 12.

PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.64001F, -1, null, [1280, 720, 29.973475], [-1, -1]), format_supported=YES, null, null)

A minimal reproducible flutter testcase is provided in https://github.com/flutter/flutter/issues/98035

DeepikaSharma5 commented 2 years ago

@ojw28 When are you going to give a solution for this?

AbelTarazona commented 2 years ago

Same issue :C

ps6067966 commented 2 years ago

same issue

rvn9 commented 2 years ago

same issue

juramire commented 2 years ago

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

Works!

lukaszreszetow commented 2 years ago

Same issue on Android 11.

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

Works!

This does not work if you need to store more than a single controller in the app (for buffering next videos etc.)

tgpsantos commented 2 years ago

Same issue on Android 11.

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

Works!

This does not work if you need to store more than a single controller in the app (for buffering next videos etc.)

Exactly. And this is a common use case, for instance:

evgenyuliganets commented 1 year ago

Same issue on Android 11.

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

Works!

This does not work if you need to store more than a single controller in the app (for buffering next videos etc.)

have you solve this?

evgenyuliganets commented 1 year ago

Same issue on Android 11.

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

Works!

This does not work if you need to store more than a single controller in the app (for buffering next videos etc.)

Exactly. And this is a common use case, for instance:

  • page view of several videos
  • video feed

have you solve this?

lailai0715 commented 1 year ago

Still not working in Snapdragon processor

Tested on 8G1(S22 Ultra) and 865(One Plus)

alvinotienokelly commented 1 year ago

I've realised that this error only comes when you use IP path instead of domain path to play the videos.

lukaszreszetow commented 1 year ago

For everyone looking for a workaround check: https://github.com/flutter/flutter/issues/25558#issuecomment-1436378745

khanawan62 commented 1 year ago

I know this is pretty late, but to anyone who is still struggling in 2023 because of this disastrous bug, calling the following code can help you get rid of it when you are changing your video (loading next or previous video)
`

Future <void> onControllerChange () async {
            if (_videoPlayerController == null) { //if current controller is null
              initializeController(); //method to initialize your video controller
            } else {
              final oldController = _videoPlayerController;
              await oldController.dispose();
              initializeController();
            }
          }` 
azuluaga-hu commented 1 year ago

Obteniendo el mismo problema en react-native también

E/ExoPlayerImplInternal: Renderer error: index=0, type=video, format=Format(2, null, null, video/avc, null, -1, null, [4096, 2130, 24.999998], [-1, -1]), rendererSupport=NO_EXCEEDS_CAPABILITIES
      com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(2, null, null, video/avc, null, -1, null, [4096, 2130, 24.999998], [-1, -1])
        at com.google.android.exoplayer2.BaseRenderer.createRendererException(BaseRenderer.java:359)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:563)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:246)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(2, null, null, video/avc, null, -1, null, [4096, 2130, 24.999998], [-1, -1])
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:867)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
     Caused by: android.media.MediaCodec$CodecException: Error 0xffffec77
        at android.media.MediaCodec.native_configure(Native Method)
        at android.media.MediaCodec.configure(MediaCodec.java:2127)
        at android.media.MediaCodec.configure(MediaCodec.java:2043)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:689)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:928)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:860)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
2021-08-17 19:54:09.849 17604-17604/com.edfora.video.classes E/ExoPlayer Exception: com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(2, null, null, video/avc, null, -1, null, [4096, 2130, 24.999998], [-1, -1])

you could resolve this?

khanawan62 commented 1 year ago

Same issue on Android 11.

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

Works!

This does not work if you need to store more than a single controller in the app (for buffering next videos etc.)

I'm also preloading videos for buffering and facing the same issue. Video player works fine on emulator (Pixel 5 Android 12 API level 32), but results into these weird exo player errors as I play videos on an actual device (Android 10)

khanawan62 commented 1 year ago

I am also seeing similar error in a production Flutter app that uses the video_player package (the chewie flutter package uses video_player as well).

I see a number of crashes in Crashlytics, almost always Samsung devices like Samsung A11.

Unfortunately Flutter itself (or Crashlytics in Flutter) doesn't seem to capture much additional info, it sends me this:

Non-fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.4D401F, -1, null, [720, 480, 25.0], [-1, -1]), format_supported=YES, null, null). Error thrown null.
       at .()

The Flutter video_player package is using a recent, but not latest version of ExoPlayer, v2.12.1: https://github.com/flutter/plugins/blob/2068cce1d06c7cbbc6e241f83af24e67dc72863d/packages/video_player/video_player/android/build.gradle#L47

As of June 2023, Flutter's current video player version (2.6.1) is using the 2.18.7 version of exo player which happens to be the latest, but I am facing the same issue. I am preloading the videos and they work OK on emulator (Android Pixel 5 API level 32) but results in above error on the physical device (Android 10)

Joseph-Nathan commented 1 year ago

any news

jtfahad commented 1 year ago

Same issue on Android 11.

I also had similar issue on android using Flutter and video_player. I solved it by calling _controller.dispose() every time after the work was done.

Works!

This does not work if you need to store more than a single controller in the app (for buffering next videos etc.)

Exactly. And this is a common use case, for instance:

  • page view of several videos
  • video feed

It is working fine for me on IOS but it is not working in andorid,

jtfahad commented 1 year ago

any news? on this open issue ?

AnkushSinghGandhi commented 1 year ago

For everyone looking for a workaround check: flutter/flutter#25558 (comment)

Still not working 😭😭