乐趣区

关于android:Flutter视频播放Flutter-VideoPlayer-视频播放组件精要

1 增加依赖

  # 视频播放
  video_player: ^1.0.1

2 播放视频前的筹备
2.1 网络拜访权限
在 ios 目录下的 info.plist 清单文件中配置 iOS 设置的 http 网络拜访权限:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

如下图所示

在 android 目录下的 AndroidManifest.xml 清单文件中配置网络申请权限以及 http 的拜访权限

    <!--    网络申请权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 内部文件存储权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


networkSecurityConfig 配置的是 http 拜访权限

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>


3 视频播放
视频资源的加载以及播放管制全副是通过 VideoPlayerController 来操作的

3.1 视频资源的加载

VideoPlayerController  _playerController ;
  @override
  void initState() {super.initState();

    // 网络链接
    //VideoPlayerController.network(url);
    //VideoPlayerController.file(File(url));
    // 本地链接
    _videoPlayerController =
        VideoPlayerController.asset("asset 资源门路");

   // 调用初始化办法
   _videoPlayerController.initialize()
     // 异步执行完的回调
     ..whenComplete(() {
       // 刷新页面
       setState(() {});
     });

  }

3.2 视频播放组件

AspectRatio(
   // 设置视频的大小 宽高比。长宽比示意为宽高比。例如,16:9 宽高比的值为 16.0/9.0
   aspectRatio: _videoPlayerController.value.aspectRatio,
   // 播放视频的组件
   child: VideoPlayer(_videoPlayerController),
 ),
)

3.3 视频播放相干管制

    // 获取以后视频播放的信息
    VideoPlayerValue videoPlayerValue = _videoPlayerController.value;

    // 是否初始化实现
    bool initialized = videoPlayerValue.initialized;
    // 是否正在播放
    bool isPlaying = videoPlayerValue.isPlaying;
    // 以后播放的视频的宽高比例
    double aspectRatio = videoPlayerValue.aspectRatio;
    // 以后视频是否缓存
    bool isBuffer = videoPlayerValue.isBuffering;
    // 以后视频是否循环
    bool isLoop = videoPlayerValue.isLooping;
    // 以后播放视频的总时长
    Duration totalDuration = videoPlayerValue.duration;
    // 以后播放视频的地位
    Duration currentDuration = videoPlayerValue.position;
    if (initialized) {
      // 视频已初始化
      if (isPlaying) {
        // 正播放 --- 暂停
        _videoPlayerController.pause();} else {
        // 暂停 ---- 播放
        _videoPlayerController.play();}
      setState(() {});
    } else {
      // 未初始化
      _videoPlayerController.initialize().then((_) {// videoPlayerController.play();
        // setState(() {});
      });
    }
退出移动版