【问题标题】:how to show video with video player in flutter如何在颤动中使用视频播放器显示视频
【发布时间】:2020-04-06 10:33:56
【问题描述】:

如何在 Flutter 中显示视频?

我应该收到一个 api,其中包含要显示的视频 url,但它是带有我的进度指示器的白页, 我尝试了一个星期,但什么也做不了, 然后我尝试使用资产视频,但也没有用 这是我的代码,有什么问题?

请帮帮我,谢谢。

class _MyHomePageState extends State<MyHomePage> {
  VideoPlayerController _videoPlayerController;
  Future<void> _initializedVideoPlayerFuture;
  String videoUrl =
      'https://storage.koolshy.co/shasha-transcoded-videos-2019/1c18ada9-a82a-4490-ad2f-87c3ba3ed251_240.mp4';
  String videoTrack = 'assets/video.mp4';
  @override
  void initState() {
    super.initState();
//    _videoPlayerController = VideoPlayerController.network(videoUrl);
    _videoPlayerController = VideoPlayerController.asset(videoTrack);
    _videoPlayerController.setLooping(true);
    _videoPlayerController.setVolume(1.0);
  }

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

  void _incrementCounter() {
    setState(() {
      _videoPlayerController.value.isPlaying
          ? _videoPlayerController.pause()
          : _videoPlayerController.play();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            FutureBuilder(
              future: _initializedVideoPlayerFuture,
              builder: (context, snapshot) {
                if (snapshot.connectionState == ConnectionState.done) {
                  return AspectRatio(
                    aspectRatio: _videoPlayerController.value.aspectRatio,
                    child: VideoPlayer(_videoPlayerController),
                  );
                } else {
                  return Center(
                    child: CircularProgressIndicator(),
                  );
                }
              },
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'play/pause',
        child: Icon(_videoPlayerController.value.isPlaying
            ? Icons.pause
            : Icons.play_arrow),
      ),
    );
  }
}

【问题讨论】:

标签: api flutter video dart assets


【解决方案1】:

缺少一条语句

    _initializedVideoPlayerFuture = _videoPlayerController.initialize();

应该在initstate()中

  void initState() {
    super.initState();
    _videoPlayerController = VideoPlayerController.network(videoUrl);
//    _videoPlayerController = VideoPlayerController.asset(videoTrack);
    _initializedVideoPlayerFuture = _videoPlayerController.initialize();

    _videoPlayerController.setLooping(true);
    _videoPlayerController.setVolume(1.0);
  }

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 2022-06-21
    • 2022-06-12
    • 1970-01-01
    • 2021-07-28
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多