Skip to content

Video player on Android 29 device does not play media #166481

Closed

Description

@bekirtaskin

Steps to reproduce

This is the same issue with this. It is re-occurred in Flutter 3.29.2 and 3.31.0-1.0.pre.363.

Run simple example of video player app. Video player version is 2.9.5. Tested with impeller and skia, both not working.

Expected results

Video is playing

Actual results

Video not playing

Code sample

Code sample

Tested with impeller and skia, both not working.

Screenshots or Video

Screenshots / Video demonstration

[Upload media here]

Logs

Logs
I/ExoPlayerImpl(12629): Init ff2837 [AndroidXMedia3/1.4.1] [HWSNE, SNE-LX1, HUAWEI, 29]
W/me.castify(12629): Accessing hidden method Landroid/media/AudioTrack;->getLatency()I (greylist, reflection, allowed)
D/NetworkSecurityConfig(12629): No Network Security Config specified, using platform default
D/ProfileInstaller(12629): Installing profile for me.castify
W/VideoCapabilities(12629): Unrecognized profile/level 0/0 for video/mpeg2
W/VideoCapabilities(12629): Unrecognized profile/level 0/2 for video/mpeg2
W/VideoCapabilities(12629): Unrecognized profile/level 0/3 for video/mpeg2
I/VideoCapabilities(12629): Unsupported profile 5 for video/mpeg2
I/chatty  (12629): uid=10212(me.castify) ExoPlayer:Playb identical 2 lines
I/VideoCapabilities(12629): Unsupported profile 5 for video/mpeg2
W/VideoCapabilities(12629): Unrecognized profile/level 1/32 for video/mp4v-es
W/VideoCapabilities(12629): Unrecognized profile/level 32768/2 for video/mp4v-es
W/VideoCapabilities(12629): Unrecognized profile/level 32768/64 for video/mp4v-es
I/OMXClient(12629): IOmx service obtained
I/ACodec  (12629): In onAllocateComponent create compenent, codec name: OMX.hisi.video.decoder.avc
D/SurfaceUtils(12629): connecting to surface 0x7a01fc3010, reason connectToSurface
I/MediaCodec(12629): [OMX.hisi.video.decoder.avc] setting surface generation to 12932097
D/SurfaceUtils(12629): disconnecting from surface 0x7a01fc3010, reason connectToSurface(reconnect)
D/SurfaceUtils(12629): connecting to surface 0x7a01fc3010, reason connectToSurface(reconnect)
E/ACodec  (12629): [OMX.hisi.video.decoder.avc] setPortMode on output to DynamicANWBuffer failed w/ err -2147483648
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] got color aspects (R:2(Limited), P:3(BT601_6_625), M:3(BT601_6), T:3(SMPTE170M)) err=0(NO_ERROR)
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] got color aspects (R:2(Limited), P:3(BT601_6_625), M:3(BT601_6), T:3(SMPTE170M)) err=0(NO_ERROR)
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] using color aspects (R:2(Limited), P:3(BT601_6_625), M:3(BT601_6), T:3(SMPTE170M)) and dataspace 0x102
I/ACodec  (12629): onStart
I/HwExtendedUtils(12629): Set to window composer mode as 2
I/ACodec  (12629): gralloc usage: 0(OMX) => 0x2900(ACodec)
D/SurfaceUtils(12629): disconnecting from surface 0x7a01fc3010, reason setNativeWindowSizeFormatAndUsage
D/SurfaceUtils(12629): connecting to surface 0x7a01fc3010, reason setNativeWindowSizeFormatAndUsage
D/SurfaceUtils(12629): set up nativeWindow 0x7a01fc3010 for 222x480, color 0x30d, rotation 0, usage 0x2900
W/ACodec  (12629): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 11 failed: -1010
W/ACodec  (12629): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 10 failed: -1010
W/ACodec  (12629): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 9 failed: -1010
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] Allocating 8 buffers from a native window of size 276480 on output port
W/Gralloc3(12629): allocator 3.x is not supported
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] got color aspects (R:2(Limited), P:4(BT601_6_525), M:3(BT601_6), T:3(SMPTE170M)) err=0(NO_ERROR)
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] got color aspects (R:2(Limited), P:4(BT601_6_525), M:3(BT601_6), T:3(SMPTE170M)) err=0(NO_ERROR)
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] using color aspects (R:2(Limited), P:4(BT601_6_525), M:3(BT601_6), T:3(SMPTE170M)) and dataspace 0x103
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] got color aspects (R:2(Limited), P:4(BT601_6_525), M:3(BT601_6), T:3(SMPTE170M)) err=0(NO_ERROR)
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] got color aspects (R:2(Limited), P:4(BT601_6_525), M:3(BT601_6), T:3(SMPTE170M)) err=0(NO_ERROR)
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] using color aspects (R:2(Limited), P:4(BT601_6_525), M:3(BT601_6), T:3(SMPTE170M)) and dataspace 0x103
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] Now handling output port settings change
I/ACodec  (12629): [OMX.hisi.video.decoder.avc] Output port now disabled.
I/HwExtendedUtils(12629): Set to window composer mode as 2
I/ACodec  (12629): gralloc usage: 0(OMX) => 0x2900(ACodec)
D/SurfaceUtils(12629): disconnecting from surface 0x7a01fc3010, reason setNativeWindowSizeFormatAndUsage
D/SurfaceUtils(12629): connecting to surface 0x7a01fc3010, reason setNativeWindowSizeFormatAndUsage
D/SurfaceUtils(12629): set up nativeWindow 0x7a01fc3010 for 224x480, color 0x30d, rotation 0, usage 0x2900
W/ACodec  (12629): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 19 failed: -1010
W/ACodec  (12629): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 18 failed: -1010
W/ACodec  (12629): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 17 failed: -1010
W/ACodec  (12629): [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 16 failed: -1010
E/ACodec  (12629): Failed to allocate output port buffers after port reconfiguration: (-1010)
E/ACodec  (12629): signalError(omxError 0x80001001, internalError -1010)
E/MediaCodec(12629): Codec reported err 0xfffffc0e, actionCode 0, while in state 6
E/ACodec  (12629): Error occurred while disabling the output port
D/SurfaceUtils(12629): disconnecting from surface 0x7a01fc3010, reason disconnectFromSurface
E/MediaCodecVideoRenderer(12629): Video codec error
E/MediaCodecVideoRenderer(12629):   java.lang.IllegalStateException
E/MediaCodecVideoRenderer(12629):       at android.media.MediaCodec.native_dequeueInputBuffer(Native Method)
E/MediaCodecVideoRenderer(12629):       at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2726)
E/MediaCodecVideoRenderer(12629):       at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter.dequeueInputBufferIndex(SynchronousMediaCodecAdapter.java:101)
E/MediaCodecVideoRenderer(12629):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:1316)
E/MediaCodecVideoRenderer(12629):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:875)
E/MediaCodecVideoRenderer(12629):       at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:1018)
E/MediaCodecVideoRenderer(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1136)
E/MediaCodecVideoRenderer(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
E/MediaCodecVideoRenderer(12629):       at android.os.Handler.dispatchMessage(Handler.java:106)
E/MediaCodecVideoRenderer(12629):       at android.os.Looper.loop(Looper.java:219)
E/MediaCodecVideoRenderer(12629):       at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(12629): Playback error
E/ExoPlayerImplInternal(12629):   androidx.media3.exoplayer.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.4D4015, 1540000, null, [222, 480, -1.0, ColorInfo(BT601, Limited range, SDR SMPTE 170M, false, 8bit Luma, 8bit Chroma)], [-1, -1]), format_supported=YES
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:640)
E/ExoPlayerImplInternal(12629):       at android.os.Handler.dispatchMessage(Handler.java:106)
E/ExoPlayerImplInternal(12629):       at android.os.Looper.loop(Looper.java:219)
E/ExoPlayerImplInternal(12629):       at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(12629):   Caused by: androidx.media3.exoplayer.video.MediaCodecVideoDecoderException: Decoder failed: OMX.hisi.video.decoder.avc
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1982)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:893)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:1018)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1136)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:561)
E/ExoPlayerImplInternal(12629):       ... 3 more
E/ExoPlayerImplInternal(12629):   Caused by: java.lang.IllegalStateException
E/ExoPlayerImplInternal(12629):       at android.media.MediaCodec.native_dequeueInputBuffer(Native Method)
E/ExoPlayerImplInternal(12629):       at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2726)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter.dequeueInputBufferIndex(SynchronousMediaCodecAdapter.java:101)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:1316)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:875)
E/ExoPlayerImplInternal(12629):       ... 6 more
E/ExoPlayerImplInternal(12629): Disable failed.
E/ExoPlayerImplInternal(12629):   java.lang.IllegalStateException
E/ExoPlayerImplInternal(12629):       at android.media.MediaCodec.native_flush(Native Method)
E/ExoPlayerImplInternal(12629):       at android.media.MediaCodec.flush(MediaCodec.java:2194)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.mediacodec.SynchronousMediaCodecAdapter.flush(SynchronousMediaCodecAdapter.java:168)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:960)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:953)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:780)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:794)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.BaseRenderer.disable(BaseRenderer.java:220)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1846)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:1566)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:1523)
E/ExoPlayerImplInternal(12629):       at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:686)
E/ExoPlayerImplInternal(12629):       at android.os.Handler.dispatchMessage(Handler.java:106)
E/ExoPlayerImplInternal(12629):       at android.os.Looper.loop(Looper.java:219)
E/ExoPlayerImplInternal(12629):       at android.os.HandlerThread.run(HandlerThread.java:67)

Flutter Doctor output

Doctor output
[✓] Flutter (Channel main, 3.31.0-1.0.pre.363, on macOS 15.3.2 24D81 darwin-arm64, locale en-TR) [1,480ms]
    • Flutter version 3.31.0-1.0.pre.363 on channel main at /Users/bekirtaskin/Dev/fluttersdk
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision a0b1b32534 (27 hours ago), 2025-04-01 12:33:23 -0400
    • Engine revision a0b1b32534
    • Dart version 3.8.0 (build 3.8.0-250.0.dev)
    • DevTools version 2.45.0-dev.0

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.1) [840ms]
    • Android SDK at /Users/bekirtaskin/Library/Android/sdk
    • Platform android-35, build-tools 35.0.1
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 21.0.5+-12932927-b750.29)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.3) [472ms]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16E140
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [7ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2024.3) [7ms]
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.5+-12932927-b750.29)

[✓] Connected device (4 available) [5.6s]
    • SNE LX1 (mobile)                   • HVYDU19313003053          • android-arm64  • Android 10 (API 29)
    • Bekir iPhone’u (wireless) (mobile) • 00008140-00161C69029B001C • ios            • iOS 18.4 22E240
    • macOS (desktop)                    • macos                     • darwin-arm64   • macOS 15.3.2 24D81 darwin-arm64
    • Chrome (web)                       • chrome                    • web-javascript • Google Chrome 134.0.6998.167

[✓] Network resources [792ms]
    • All expected network resources are available.

• No issues found!

Activity

  1. darshankawar commented on Apr 3, 2025

    @darshankawar
    Member

    I am unable to replicate this on S10+ device using plugin example. As we currently don't have Huawei device, I am unable to replicate / verify this further, but based on the report, I'll keep the issue open for team's tracking.

  2. added
    platform-androidAndroid applications specifically
    engineflutter/engine related. See also e: labels.
    packageflutter/packages repository. See also p: labels.
    e: OS-version specificAffects only some versions of the relevant operating system
    team-androidOwned by Android platform team
    on Apr 3, 2025
  3. removed
    in triagePresently being triaged by the triage team
    on Apr 4, 2025
  4. rutulchauhan commented on Apr 7, 2025

    @rutulchauhan

    We've received user support tickets regarding the video player not functioning properly on the following devices:

    • HUAWEI ELE-L29
    • HUAWEI EML-L09 (Android 29)
    • HUAWEI MAR-LX1A (Android 29)

    Could you please look into the compatibility or performance issues affecting these devices? Any assistance or insights would be greatly appreciated.

    Thank you!

  5. cerealexx commented on Apr 7, 2025

    @cerealexx

    Also happening on these devices:

    • SM-A415F
    • MAR-LX1B
    • VOG-L29
    • CPH2239
    • HWMAR
    • moto g(8) power lite
    • M2003J15SC
  6. lzhAndroid commented on Apr 8, 2025

    @lzhAndroid
  7. Huuuuuub commented on Apr 8, 2025

    @Huuuuuub
  8. lzhAndroid commented on Apr 8, 2025

    @lzhAndroid
  9. 75 remaining items

  10. camsim99 commented on Feb 6, 2026

    @camsim99
    Contributor

    @serbandin Thank you so much for your research and your potential fix for the issue! I'll take a look.

    As for bug 2: I assume you're referencing the androidx.media3.exoplayer.ExoPlaybackException: Source error error I've also seen (example stack trace in #166481 (comment)). Your findings are super useful. I'm seeing that error while trying to use the video_player plugin to play videos recorded by the camera_android_camerax plugin: #157181. I'll keep that in mind and make any further updates about this error in that issue.

  11. naseerr commented on Feb 6, 2026

    @naseerr

    Im facing the same issue here

    Device Information:
    Device: Huawei P Smart 2019 (POT-LX1)
    Chipset: HiSilicon Kirin 710
    OS: Android 9 (API 29)
    Flutter Version: 3.38.9 (Stable)
    Dart Version: 3.10.8 (Synced with 2026 build)

    Observed Behavior
    When attempting to play a video using the standard video_player (ExoPlayer), the app consistently crashes during decoder initialization. The hardware decoder (OMX.hisi.video.decoder.avc) fails to allocate buffers, resulting in an internal -1010 error. This subsequently breaks the Flutter MethodChannel, making it impossible to establish a connection with any platform view, including third-party plugins.

    Technical Logs

    The failure follows a consistent pattern during the transition to the IDLE state:

    I/ACodec: [OMX.hisi.video.decoder.avc] gralloc usage: 0(OMX) => 0x2900(ACodec)
    W/ACodec: [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 12 failed: -1010
    W/ACodec: [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 11 failed: -1010
    E/ACodec: Failed to allocate buffers after transitioning to IDLE state (error 0xfffffc0e)
    E/ACodec: signalError(omxError 0x80001001, internalError -1010)
    E/MediaCodec: Codec reported err 0xfffffc0e, actionCode 0, while in state 5
    W/MediaCodecRenderer: Failed to initialize decoder: OMX.hisi.video.decoder.avc
    

    Immediately following this hardware crash, Flutter fails to initialize the platform view:

    E/flutter: [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
    I/PlatformViewsController: PlatformView is using SurfaceProducer backend
    

    What We Have Attempted:

    • Environment Sync: Upgraded to Flutter 3.38.9 and repaired the Dart SDK to ensure no version mismatch was causing the channel error.

    • Software Decoding Fallback: Attempted to bypass the hardware decoder using flutter_vlc_player with hwAcc: HwAcc.disabled.

    • Hybrid Composition: Attempted to force virtualDisplay: false to avoid the SurfaceProducer backend mentioned in the logs.

    • Resource Reset: Performed hard device restarts to clear the OMX.hisi buffer, but the error recurs upon the first video initialization in the Flutter app.

    Key Finding
    The issue seems tied to how the SurfaceProducer backend interacts with the Kirin 710's media drivers on Android 29. Once the hardware decoder fails with -1010, the entire Platform View system for that process becomes unstable, leading to a permanent channel-error.

  12. naseerr commented on Feb 7, 2026

    @naseerr

    Im facing the same issue here

    Device Information: Device: Huawei P Smart 2019 (POT-LX1) Chipset: HiSilicon Kirin 710 OS: Android 9 (API 29) Flutter Version: 3.38.9 (Stable) Dart Version: 3.10.8 (Synced with 2026 build)

    Observed Behavior When attempting to play a video using the standard video_player (ExoPlayer), the app consistently crashes during decoder initialization. The hardware decoder (OMX.hisi.video.decoder.avc) fails to allocate buffers, resulting in an internal -1010 error. This subsequently breaks the Flutter MethodChannel, making it impossible to establish a connection with any platform view, including third-party plugins.

    Technical Logs

    The failure follows a consistent pattern during the transition to the IDLE state:

    I/ACodec: [OMX.hisi.video.decoder.avc] gralloc usage: 0(OMX) => 0x2900(ACodec)
    W/ACodec: [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 12 failed: -1010
    W/ACodec: [OMX.hisi.video.decoder.avc] setting nBufferCountActual to 11 failed: -1010
    E/ACodec: Failed to allocate buffers after transitioning to IDLE state (error 0xfffffc0e)
    E/ACodec: signalError(omxError 0x80001001, internalError -1010)
    E/MediaCodec: Codec reported err 0xfffffc0e, actionCode 0, while in state 5
    W/MediaCodecRenderer: Failed to initialize decoder: OMX.hisi.video.decoder.avc
    

    Immediately following this hardware crash, Flutter fails to initialize the platform view:

    E/flutter: [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
    I/PlatformViewsController: PlatformView is using SurfaceProducer backend
    

    What We Have Attempted:

    • Environment Sync: Upgraded to Flutter 3.38.9 and repaired the Dart SDK to ensure no version mismatch was causing the channel error.
    • Software Decoding Fallback: Attempted to bypass the hardware decoder using flutter_vlc_player with hwAcc: HwAcc.disabled.
    • Hybrid Composition: Attempted to force virtualDisplay: false to avoid the SurfaceProducer backend mentioned in the logs.
    • Resource Reset: Performed hard device restarts to clear the OMX.hisi buffer, but the error recurs upon the first video initialization in the Flutter app.

    Key Finding The issue seems tied to how the SurfaceProducer backend interacts with the Kirin 710's media drivers on Android 29. Once the hardware decoder fails with -1010, the entire Platform View system for that process becomes unstable, leading to a permanent channel-error.

    The Following Workaround worked for me:
    Verified Workaround for Kirin 710 / API 29 (-1010 Resource Error)
    We have successfully resolved the recurring -1010 decoder crash and channel-error on Huawei devices by implementing a Singleton Video Manager using media_kit.
    Key Steps to Reproduce Success:

    1. Engine Swap: Replace video_player (ExoPlayer) with [media_kit](https://pub.dev/packages/media_kit) (libmpv) to utilize software decoding.
    2. Resource Capping: Enforce a Singleton Service so that only one native player instance exists at any time. This avoids the hardware buffer exhaustion (-1010) common on Kirin chips.
    3. Manual Handshake: Implement a Future.delayed (1s) and virtualDisplay: false (Hybrid Composition) to ensure the Platform View bridge is stable before frames are sent.
    4. Hardware Bypass: Set enableHardwareAcceleration: false in the VideoControllerConfiguration.
  13. YasmineKromel commented on Feb 17, 2026

    @YasmineKromel

    I have the same problem on device Huawei p30 android 10 and the fix in this package help me https://github.com/dennisstromberg/video_player_android
    Why Dennis’s Changes Might Help
    Dennis’s fork introduced:
    ✅ Ability to use platform views instead of texture-based rendering
    Platform views use a native SurfaceView instead of textures → avoids some rendering bugs.
    This is relevant because ExoPlayer may fail when rendering via texture (especially on older Android versions or when the Surface gets recreated).
    Dennis’s changes give a second option that might work around this exact bug.

  14. YasmineKromel commented on Feb 17, 2026

    @YasmineKromel

    If your goal is working video playback on Android 10 devices now.

    — Use the official plugin with platform views:
    VideoPlayerController.network(
    url,
    videoPlayerOptions: VideoPlayerOptions(viewType: VideoViewType.platformView),
    );

    Platform views often avoid the texture rendering bugs that cause the crash

  15. github-actions commented on Mar 11, 2026

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  16. locked as resolved and limited conversation to collaborators on Mar 11, 2026
  17. moved this from In Progress to Done in Deprecating camera_androidon Mar 18, 2026
  18. added a commit that references this issue on Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work liste: OS-version specificAffects only some versions of the relevant operating systeme: device-specificOnly manifests on certain devicesengineflutter/engine related. See also e: labels.p: video_playerThe Video Player pluginpackageflutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyteam-androidOwned by Android platform team

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions