Flutter视频播放器对Vimeo video抛出异常

如何解决Flutter视频播放器对Vimeo video抛出异常

我正在尝试使用视频播放器库在Flutter应用中播放vimeo视频。

我遵循了video_player的示例。当我启动屏幕和Android模拟器时,我将抛出以下异常...。

I/ExoPlayerImpl( 8462): Release 1ac4175 [ExoPlayerLib/2.12.1] [generic_x86_64,Android SDK built for x86_64,Google,28] [goog.exo.core]
I/ExoPlayerImpl( 8462): Init b7aeab8 [ExoPlayerLib/2.12.1] [generic_x86_64,28]
E/ExoPlayerImplInternal( 8462): Playback error
E/ExoPlayerImplInternal( 8462):   com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal( 8462):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:554)
E/ExoPlayerImplInternal( 8462):       at android.os.Handler.dispatchMessage(Handler.java:102)
E/ExoPlayerImplInternal( 8462):       at android.os.Looper.loop(Looper.java:193)
E/ExoPlayerImplInternal( 8462):       at android.os.HandlerThread.run(HandlerThread.java:65)
E/ExoPlayerImplInternal( 8462):   Caused by: com.google.android.exoplayer2.source.UnrecognizedInputFormatException: None of the available extractors (FlvExtractor,FlacExtractor,WavExtractor,FragmentedMp4Extractor,Mp4Extractor,AmrExtractor,PsExtractor,OggExtractor,TsExtractor,MatroskaExtractor,AdtsExtractor,Ac3Extractor,Ac4Extractor,Mp3Extractor) could read the stream.
E/ExoPlayerImplInternal( 8462):       at com.google.android.exoplayer2.source.BundledExtractorsAdapter.init(BundledExtractorsAdapter.java:92)
E/ExoPlayerImplInternal( 8462):       at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1024)
E/ExoPlayerImplInternal( 8462):       at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:415)
E/ExoPlayerImplInternal( 8462):       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal( 8462):       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal( 8462):       at java.lang.Thread.run(Thread.java:764)

我的代码如下...

import 'package:flutter/material.dart';
import 'package:sidekicktool/values.dart';
import 'package:video_player/video_player.dart';

class HomeScreen extends StatefulWidget {
  HomeScreen({Key key}) : super(key: key);

  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {

  final _key = UniqueKey();  
  VideoPlayerController _controller;

  @override
  void initState() { 
    super.initState();
    _controller = VideoPlayerController.network(
        'https://vimeo.com/476379279')
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized,even before the play button has been pressed.
        setState(() {});
      });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.Background,appBar: AppBar(
        centerTitle: true,backgroundColor: Colors.Primary,title: Text(
          'HOME',style:Styles.ButtonTextStyle.copyWith(color: Colors.PrimaryContrast)
        )
      ),body: Center(
        child: _controller.value.initialized
          ? AspectRatio(
              aspectRatio: _controller.value.aspectRatio,child: VideoPlayer(_controller),)
          : Container(),),floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {
            _controller.value.isPlaying
                ? _controller.pause()
                : _controller.play();
          });
        },child: Icon(
          _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,)
      )
    );
  }
} 

解决方法

您不能在video_player中播放视频Vimeo链接。

您必须提供以视频格式结尾的视频源。

示例http://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4

这可以帮助您:video_player example

,

如果你想获得 vimeo 视频的 mp4 链接,那么在 url 搜索中 [https://player.vimeo.com/video/13083500/config] 以及您想要编辑的任何视频,都没有链接中的视频。 在这里,您将获得 json 文件,从源代码中获取 mp4 链接。 快乐编码..

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?