flutter 视频播放

 

视频播放 - 准备工作及注意事项

// 以下是视频播放功能在Flutter开发前的准备工作及一些需要注意的事项。
1、把自己的 android stuido 升级为最新版本,Xcode 升级成最新版本。否则安装配置插件的时候可能会出现问题
2、安装完成调用原生的 api 库后,需要重新运行 flutter run
3、如果运行 flutter run 失败,请打开 android studio 后重新运行,如果 android studio 下载包失败的话请用电脑连接手机热点重试。
4、如果依赖安装完成后引入库提示错误,请重启 Vscode

Flutter 视频播放插件介绍

// Flutter官方提供了一个叫做video_player的插件来播放视频,但这个插件在UI和功能上有一些限制。
// 因此,这里我们会使用一个更强大的第三方插件chewie来播放视频。
// chewie是基于video_player构建的,但它提供了更多的功能,如控制栏、全屏播放等,并且提供了更友好的Material或Cupertino界面。

在 Flutter 里官方提供了一个 video_player 插件可以播放视频。但是 video_player 有一些局限性。没法控制底部播放进度等。 所以我们主要给大家讲解一个第三方的视频播放库chewie。chewie 是一个非官方的第三方视频播放组件,看起来好像是基于 HTML5 播放的组件。chewie 相对 video_player 来说,有控制栏和全屏的功能。Chewie 使用 video_player 引擎并将其包裹在友好的 Material 或 Cupertino UI 中!

// 安装这两个插件的链接如下:
https://pub.dev/packages/video_playe
https://pub.dev/packages/chewie

视频播放功能的实现 - 代码实现

// 下面是使用video_player和chewie实现视频播放功能的Flutter代码示例。

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
import 'package:chewie/chewie.dart';

class CameraPage extends StatefulWidget {
  CameraPage({Key key});
  _CameraPage createState() => _CameraPage();
}

class _CameraPage extends State<CameraPage> {

  var videoPlayerController;   // 视频播放控制器
  var chewieController;       // chewie视频组件控制器
  var play = true;            // 控制视频播放状态,true为播放,false为暂停

  @override
  initState() {
    super.initState();
  }

  @override
  dispose() {
    super.dispose();
    videoPlayerController.dispose();  // 释放视频资源
    chewieController.dispose();      // 释放chewie组件资源
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('设备硬件')
      ),
      body: ListView(
        children: <Widget>[
          RaisedButton(child: Text('播放视频'), onPressed: () {
            playAudio();
            setState(() {
              play = true;
            });
          }),
          play ?  Container(child:  Chewie(controller: chewieController),) : SizedBox(height: 0,)
        ]
      )
    );
  }

  // 播放视频的函数
  playAudio() {
    videoPlayerController = VideoPlayerController.network('http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4');
    chewieController = ChewieController(
      videoPlayerController: videoPlayerController,
      aspectRatio: 3 / 2,
      autoPlay: true,
      looping: true,
    );
  }
}

posted on 2020-02-27 17:56  完美前端  阅读(865)  评论(0)    收藏  举报

导航