1

我正在尝试将来自不同站点的网络视频放在 Flutter 中。

我使用了video_player包。我使用了一个未来的构建器,CircularProgressIndicator它将继续运行直到加载视频。当我运行该应用程序时,在开始时CircularProgressIndicator继续运行,几秒钟后它会停止,好像视频已加载但它在模拟器上显示完全空白。换句话说,视频没有加载。

在我启动应用程序后

在此处输入图像描述

加载后

在此处输入图像描述

这是代码

class MyHomePage extends StatefulWidget {
  @override
_MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  VideoPlayerController _controller;
  Future<void> _initializeVideoPlayerFuture;

  @override
  void initState() {
    _controller = VideoPlayerController.network(
        'https://ok.ru/videoembed/1616636152346');
    _initializeVideoPlayerFuture = _controller.initialize();
    _controller.setLooping(true);
    _controller.setVolume(1.0);
    super.initState();
  }


  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.blue,
      ),
      body: FutureBuilder(
        future: _initializeVideoPlayerFuture,
        builder: (context, snapshot){
          if(snapshot.connectionState == ConnectionState.done){
            return AspectRatio(
              aspectRatio: _controller.value.aspectRatio,
              child: VideoPlayer(_controller),
            );
          } else {
            return Center(
              child: CircularProgressIndicator(backgroundColor: Colors.blue,
              ),
            );
          }
        }
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: (){
          setState(() {
            if(_controller.value.isPlaying){
              _controller.pause();
            }else{
              _controller.play();
            }
          });
        },
        child: Icon(_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
      ),
    ),
    );
  }
}
4

1 回答 1

0

您的视频链接不是有效的视频链接,它是一个嵌入网址。

要从网络 URL 播放视频,请使用直接视频 URL,例如https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4

将此链接放在您的 videoController 中,它将正常工作。

于 2020-09-28T16:01:48.823 回答