jhomlala / betterplayer

Better video player for Flutter, with multiple configuration options. Solving typical use cases!
Apache License 2.0
889 stars 929 forks source link

video can 't be played #675

Closed araafat3 closed 2 years ago

araafat3 commented 2 years ago

Describe the bug video can 't be played

Expected behavior video can be played.

Flutter doctor [✓] Flutter (Channel stable, 2.2.3, on Linux, locale en_US.UTF-8) • Flutter version 2.2.3 at /media/ahmed/New Volume/flutter_linux_2.0.3-stable/flutter • Framework revision f4abaa0735 (9 weeks ago), 2021-07-01 12:46:11 -0700 • Engine revision 241c87ad80 • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3) • Android SDK at /home/ahmed/Android/Sdk • Platform android-30, build-tools 30.0.3 • Java binary at: /media/ahmed/New Volume/android-studio/jre/bin/java • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) • All Android licenses accepted.

[✓] Chrome - develop for the web • Chrome at google-chrome

[✓] Android Studio • Android Studio at /media/ahmed/New Volume/android-studio • 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 • android-studio-dir = /media/ahmed/New Volume/android-studio • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.59.0) • VS Code at /usr/share/code • Flutter extension can be installed from: 🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (3 available) • Android SDK built for x86 (mobile) • emulator-5554 • android-x86 • Android 8.1.0 (API 27) (emulator) • Android SDK built for x86 64 (mobile) • emulator-5556 • android-x64 • Android 5.0.2 (API 21) (emulator) • Chrome (web)

Better Player version

Smartphone (please complete the following information):

Additional context I/art ( 4309): Background sticky concurrent mark sweep GC freed 18166(911KB) AllocSpace objects, 0(0B) LOS objects, 4% free, 17MB/18MB, paused 1.712ms total 119.050ms I/VideoCapabilities( 4309): Unsupported profile 4 for video/mp4v-es D/MediaCodecInfo( 4309): NoSupport [codec.profileLevel, avc1.64001E, video/avc] [OMX.google.h264.decoder, video/avc] [generic_x86_64, Android SDK built for x86_64, unknown, 21] D/MediaCodecInfo( 4309): NoSupport [codec.profileLevel, avc1.64001E, video/avc] [OMX.google.h264.decoder, video/avc] [generic_x86_64, Android SDK built for x86_64, unknown, 21] I/OMXClient( 4309): Using client-side OMX mux. E/ACodec ( 4309): [OMX.google.h264.decoder] storeMetaDataInBuffers failed w/ err -2147483648 I/art ( 4309): Rejecting re-init on previously-failed class java.lang.Class<com.google.android.exoplayer2.mediacodec.-$$Lambda$SynchronousMediaCodecAdapter$6rVPWL6LPrUurHA9gGPmM7irEkQ> I/art ( 4309): Rejecting re-init on previously-failed class java.lang.Class<com.google.android.exoplayer2.mediacodec.-$$Lambda$SynchronousMediaCodecAdapter$6rVPWL6LPrUurHA9gGPmM7irEkQ> E/ACodec ( 4309): [OMX.google.h264.decoder] ERROR(0x80001001) E/ACodec ( 4309): signalError(omxError 0x80001001, internalError -2147483648) E/MediaCodec( 4309): Codec reported err 0x80001001, actionCode 0, while in state 6 E/MediaCodecVideoRenderer( 4309): Video codec error E/MediaCodecVideoRenderer( 4309): java.lang.IllegalStateException E/MediaCodecVideoRenderer( 4309): at android.media.MediaCodec.native_dequeueInputBuffer(Native Method) E/MediaCodecVideoRenderer( 4309): at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:983) E/MediaCodecVideoRenderer( 4309): at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueInputBufferIndex(SynchronousMediaCodecAdapter.java:93) E/MediaCodecVideoRenderer( 4309): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:1209) E/MediaCodecVideoRenderer( 4309): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:845) E/MediaCodecVideoRenderer( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:945) E/MediaCodecVideoRenderer( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478) E/MediaCodecVideoRenderer( 4309): at android.os.Handler.dispatchMessage(Handler.java:98) E/MediaCodecVideoRenderer( 4309): at android.os.Looper.loop(Looper.java:135) E/MediaCodecVideoRenderer( 4309): at android.os.HandlerThread.run(HandlerThread.java:61) D/MediaCodecInfo( 4309): NoSupport [codec.profileLevel, avc1.64001E, video/avc] [OMX.google.h264.decoder, video/avc] [generic_x86_64, Android SDK built for x86_64, unknown, 21] E/ExoPlayerImplInternal( 4309): Playback error E/ExoPlayerImplInternal( 4309): com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.64001E, -1, null, [640, 360, 29.970036], [-1, -1]), format_supported=NO_EXCEEDS_CAPABILITIES E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:555) E/ExoPlayerImplInternal( 4309): at android.os.Handler.dispatchMessage(Handler.java:98) E/ExoPlayerImplInternal( 4309): at android.os.Looper.loop(Looper.java:135) E/ExoPlayerImplInternal( 4309): at android.os.HandlerThread.run(HandlerThread.java:61) E/ExoPlayerImplInternal( 4309): Caused by: com.google.android.exoplayer2.video.MediaCodecVideoDecoderException: Decoder failed: OMX.google.h264.decoder E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1410) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:864) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:945) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478) E/ExoPlayerImplInternal( 4309): ... 3 more E/ExoPlayerImplInternal( 4309): Caused by: java.lang.IllegalStateException E/ExoPlayerImplInternal( 4309): at android.media.MediaCodec.native_dequeueInputBuffer(Native Method) E/ExoPlayerImplInternal( 4309): at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:983) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueInputBufferIndex(SynchronousMediaCodecAdapter.java:93) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:1209) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:845) E/ExoPlayerImplInternal( 4309): ... 5 more E/ExoPlayerImplInternal( 4309): Disable failed. E/ExoPlayerImplInternal( 4309): java.lang.IllegalStateException E/ExoPlayerImplInternal( 4309): at android.media.MediaCodec.native_flush(Native Method) E/ExoPlayerImplInternal( 4309): at android.media.MediaCodec.flush(MediaCodec.java:662) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.flush(SynchronousMediaCodecAdapter.java:160) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:912) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:905) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:761) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:483) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:176) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1609) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:1351) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:1314) E/ExoPlayerImplInternal( 4309): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:571) E/ExoPlayerImplInternal( 4309): at android.os.Handler.dispatchMessage(Handler.java:98) E/ExoPlayerImplInternal( 4309): at android.os.Looper.loop(Looper.java:135) E/ExoPlayerImplInternal( 4309): at android.os.HandlerThread.run(HandlerThread.java:61) E/flutter ( 4309): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.64001E, -1, null, [640, 360, 29.970036], [-1, -1]), format_supported=NO_EXCEEDS_CAPABILITIES, null, null) E/flutter ( 4309):

jhomlala commented 2 years ago

Seems like your device is unable to play given video with ExoPlayer. Did you try to run another videos?

araafat3 commented 2 years ago

Yes and same issue appear only on Android 5 and 5.1

jhomlala commented 2 years ago

Can you provide video which causes this error?

jhomlala commented 2 years ago

@araafat3 I believe this issue is connected with old Android version which doesn't play well with latest exoplayer. I think the best solution will be using newer android. I'm closing this right now. Feel free to answer in this issue and I'll reopen it.

hussenIbrahim commented 2 years ago

i have the same issue with some mkv files

Describe the bug some mkv file not working and throw this exceptipn Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/hevc, hvc1.2.4.L120.90, -1, und, [1920, 1080, -1.0], [-1, -1]), format_supported=NO_EXCEEDS_CAPABILITIES, , null)

*Example code `import 'dart:async';

import 'package:better_player/better_player.dart'; import 'package:family/repo/last_position.dart'; import 'package:family/state_widget/my_drawer.dart'; import 'package:family/utilities/locator.dart';

import 'package:flutter/material.dart'; import 'package:flutter/services.dart';

class HlsSubtitlesPage extends StatefulWidget { final String title; final String url; final bool isStream; final String image;

const HlsSubtitlesPage( {Key key, @required this.title, @required this.url, @required this.isStream, @required this.image}) : super(key: key); @override _HlsSubtitlesPageState createState() => _HlsSubtitlesPageState(); }

class _HlsSubtitlesPageState extends State { BetterPlayerController _betterPlayerController; @override void initState() { _init(); super.initState(); }

_init() async { int postion = 0;

BetterPlayerControlsConfiguration controlsConfiguration =
    BetterPlayerControlsConfiguration(
  controlBarColor: Colors.black26,
  iconsColor: Colors.white,
  playIcon: Icons.play_arrow_outlined,
  progressBarPlayedColor: Colors.indigo,
  progressBarHandleColor: Colors.indigo,
  skipBackIcon: Icons.replay_10_outlined,
  skipForwardIcon: Icons.forward_10_outlined,
  backwardSkipTimeInMilliseconds: 10000,
  forwardSkipTimeInMilliseconds: 10000,
  enableSkips: !widget.isStream,
  enableFullscreen: true,
  enableRetry: !widget.isStream,
  enablePip: true,
  enablePlayPause: true,
  enableMute: true,
  enableAudioTracks: false,
  enableProgressText: true,
  enableSubtitles: true,
  showControlsOnInitialize: false,
  enablePlaybackSpeed: true,
  controlBarHeight: 40,
  enableQualities: false,
  enableProgressBarDrag: !widget.isStream,
  showControls: true,
  loadingColor: Colors.red,
  overflowModalColor: Colors.black54,
  overflowModalTextColor: Colors.white,
  overflowMenuIconsColor: Colors.white,
);

BetterPlayerConfiguration betterPlayerConfiguration =
    BetterPlayerConfiguration(
        errorBuilder: (BuildContext context, String error) {
          return Text("$error");
        },

        controlsConfiguration: controlsConfiguration,
        aspectRatio: 16 / 9,
        showPlaceholderUntilPlay: true,
        placeholder: _buildPlaceholder(),
        autoDetectFullscreenDeviceOrientation: true,
        handleLifecycle: true,
        placeholderOnTop: true,
        useRootNavigator: true,
        systemOverlaysAfterFullScreen: [
          SystemUiOverlay.bottom,
          SystemUiOverlay.bottom
        ],
        allowedScreenSleep: false,
        autoPlay: true,
        fit: BoxFit.contain,
        subtitlesConfiguration:
            const BetterPlayerSubtitlesConfiguration(fontSize: 16.0));
BetterPlayerDataSource dataSource = BetterPlayerDataSource(
    BetterPlayerDataSourceType.network, widget.url,
    headers: {
      "Content-Type:": "application/vnd.apple.mpegurl",
      "Content-Encoding": "gzip",
      "Accept-Encoding": "gzip, deflate",
      "User-Agent": "Forever Pro+  v 21"
    },
    cacheConfiguration: BetterPlayerCacheConfiguration(
        useCache: true,
        preCacheSize: 10 * 1024 * 1024,
        maxCacheSize: 10 * 1024 * 1024,
        maxCacheFileSize: 10 * 1024 * 1024,
        key: widget.url),
    bufferingConfiguration: const BetterPlayerBufferingConfiguration(

        bufferForPlaybackAfterRebufferMs: 1000),
    liveStream: widget.isStream,
    useAsmsSubtitles: true);

_betterPlayerController = BetterPlayerController(betterPlayerConfiguration);
await _betterPlayerController.setupDataSource(dataSource);
_betterPlayerController.videoPlayerController.addListener(() {
  int _postion = _betterPlayerController
      .videoPlayerController.value.position.inSeconds;

});
_betterPlayerController.addEventsListener((event) {
  if (event.betterPlayerEventType == BetterPlayerEventType.play) {
    _playController.add(false);
  }
});

}

final StreamController _playController = StreamController.broadcast();

@override Widget build(BuildContext context) {

return SafeArea(
    child: Scaffold(
  appBar: AppBar(
    title: Text("${widget.title}"),
  ),
  body: BetterPlayer(controller: _betterPlayerController),
));

}

Widget _buildPlaceholder() { return StreamBuilder( stream: _playController.stream, builder: (context, snapshot) { bool showPlaceholder = snapshot.data ?? true; return AnimatedOpacity( duration: const Duration(milliseconds: 500), opacity: showPlaceholder ? 1.0 : 0.0, child: AspectRatio( aspectRatio: 16 / 9, child: widget.image != null && widget.image != "" ? Image.network( widget.image, fit: BoxFit.contain, ) : const SizedBox(), ), ); }, ); } } `

Flutter doctor `[√] Flutter (Channel stable, 2.5.3, on Microsoft Windows [Version 10.0.19043.1288], locale en-US) • Flutter version 2.5.3 at C:\src\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 18116933e7 (3 weeks ago), 2021-10-15 10:46:35 -0700 • Engine revision d3ea636dc5 • Dart version 2.14.4

[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0-rc5) • Android SDK at C:\Users\Hussen\AppData\Local\Android\sdk • Platform android-31, build-tools 31.0.0-rc5 • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01) • All Android licenses accepted.

[√] Chrome - develop for the web • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.10.0) • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community • Visual Studio Community 2019 version 16.10.31321.278 • Windows 10 SDK version 10.0.18362.0

[√] Android Studio (version 4.1) • Android Studio at C:\Program Files\Android\Android Studio • 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 1.8.0_242-release-1644-b01)

[√] VS Code (version 1.62.0) • VS Code at C:\Users\Hussen\AppData\Local\Programs\Microsoft VS Code • Flutter extension version 3.28.0

[√] Connected device (4 available) • SM M115F (mobile) • R9JN40LXMSJ • android-arm • Android 11 (API 30) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19043.1288] • Chrome (web) • chrome • web-javascript • Google Chrome 95.0.4638.69 • Edge (web) • edge • web-javascript • Microsoft Edge 95.0.1020.40

• No issues found!`

Better Player version

Smartphone

zhouxin1233 commented 1 year ago

Can you provide video which causes this error?

i hava a same problem, this is my video url: https://asterism02.blob.core.windows.net/kira-data-01/user/community_1681958791253062.mp4