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

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

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Reactions: 41
  • Comments: 51 (2 by maintainers)

Most upvoted comments

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

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

any news

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.)

The same issue here… using flutter

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.

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

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

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

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])

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.

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?

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.<init>(MediaCodec.java:1912) W/MediaCodecRenderer(18803): at android.media.MediaCodec.createByCodecName(MediaCodec.java:1890)

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

Still not working 😭😭

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)

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

Anyone who have managed to resolve this issue?