簡體   English   中英

何以捕捉flutter video_player插件錯誤?

[英]Ho to catch flutter video_player plugin error?

如何捕捉flutter 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 initialize().then沒有捕獲錯誤,例如視頻https://str09.vidoza.net/x4lfoiywwbzpvjumxbaeidisvq6cmoufczvmicnesasm4zqpyunkofpekfla/v.mp4

您可以將偵聽器附加到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) {}
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM