【问题标题】:Ho to catch flutter video_player plugin error?如何捕捉颤动的 video_player 插件错误?
【发布时间】:2019-09-21 20:48:58
【问题描述】:

如何捕捉颤振 video_player 插件的错误? 错误是Source error。发生此错误时,我想显示错误消息。

I/ExoPlayerImpl(31473): Init 98a4284 [ExoPlayerLib/2.9.6] [kenzo, Redmi Note 3, Xiaomi, 23]
E/ExoPlayerImplInternal(31473): Source error.
E/ExoPlayerImplInternal(31473): com.google.android.exoplayer2.source.UnrecognizedInputFormatException: None of the available extractors (MatroskaExtractor, FragmentedMp4Extractor, Mp4Extractor, Mp3Extractor, AdtsExtractor, Ac3Extractor, TsExtractor, FlvExtractor, OggExtractor, PsExtractor, WavExtractor, AmrExtractor) could read the stream.
E/ExoPlayerImplInternal(31473):     at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractorHolder.selectExtractor(ExtractorMediaPeriod.java:973)
E/ExoPlayerImplInternal(31473):     at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:891)
E/ExoPlayerImplInternal(31473):     at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
E/ExoPlayerImplInternal(31473):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
E/ExoPlayerImplInternal(31473):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
E/ExoPlayerImplInternal(31473):     at java.lang.Thread.run(Thread.java:818)
I/flutter (31473): Another exception was thrown: A ChewieController was used after being disposed.
I/ExoPlayerImpl(31473): Release 98a4284 [ExoPlayerLib/2.9.6] [kenzo, Redmi Note 3, Xiaomi, 23] [goog.exo.core]

我的代码

animeVidBloc.vidCtrl = VideoPlayerController.network(streamurl.src)
          ..initialize().then((_) {
            animeVidBloc.vidCtrl.pause();
            animeVidBloc.cheCtrl = ChewieController(
              videoPlayerController: animeVidBloc.vidCtrl,
              aspectRatio: animeVidBloc.vidCtrl.value.aspectRatio,
              autoPlay: false,
              looping: false,
              allowedScreenSleep: false,
            );
            animeVidBloc.isLoadingData = false;
            animeVidBloc.isLoadingVideo = false;
            animeVidBloc.cheCtrl.pause();
            animeVidBloc.rebuildWidgets(ids: ['body', 'download']);
          });

initialize().then 之后使用.catch 不会发现错误, 示例视频https://str09.vidoza.net/x4lfoiywwbzpvjumxbaeidisvq6cmoufczvmicnesasm4zqpyunkofpekfla/v.mp4

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您可以将侦听器附加到VidePlayerController 对象以捕获控制器的状态。

    VideoPlayerController _controller = VideoPlayerController.network(
        "https://str09.vidoza.net/x4lfoiywwbzpvjumxbaeidisvq6cmoufczvmicnesasm4zqpyunkofpekfla/v.mp4")
      ..initialize();
    
    _controller.addListener(() {
      if (_controller.value.hasError) {
        print(_controller.value.errorDescription);
      }
      if (_controller.value.initialized) {}
      if (_controller.value.isBuffering) {}
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 2020-03-18
      相关资源
      最近更新 更多