├── README.md └── docs ├── .nojekyll ├── Dockerfile ├── README.md ├── _sidebar.md ├── images ├── qrcode.png └── small_window.png ├── index.html ├── 上手使用 ├── ExtendVideoPlayer.md ├── ExtendVideoPlayerParam.md ├── ExtendVideoPlayerResource.md ├── ExtendVideoPlayerUIParam.md └── README.md ├── 关于 └── README.md ├── 快速开始 └── README.md └── 高阶使用 ├── ExtendVideoPlayerCoreModel.md ├── ExtendVideoPlayerDrawerWindowModel.md ├── ExtendVideoPlayerHooksModel.md ├── ExtendVideoPlayerTipsModel.md ├── ExtendVideoPlayerWindowModel.md └── README.md /README.md: -------------------------------------------------------------------------------- 1 | # 什么是 video_player_library 2 | 3 | video_player_library 是 Flutter 平台的视频播放器库,播放器核心基于 [video player](https://pub.dev/packages/video_player) 。内置功能丰富,方便您的项目完成快速交付。 4 | 5 | > 注:部分功能不支持模拟器上运行,实际效果以真机为准。 6 | 7 | [点击查看使用文档](https://github.com/JiangJuHong/FlutterVideoPlayerLibrary-Desc/tree/main/docs) 8 | 9 | 10 | # 优势 11 | 12 | * 快速集成:参考文档两分钟即可接入到你的项目。 13 | * 功能丰富:支持`多源视频加载`、`窗口/全屏模式`、`清晰度切换`、`倍速切换`、`手势控制`、`横竖屏`、`音量控制`、`亮度控制`、`自定义组件`、`自定义钩子`等功能 14 | * 持续维护:项目会持续迭代,功能会越来越丰富。如果某个功能存在缺陷,将会在最短的时间内进行修复。 15 | * 跨平台性:项目支持Android、IOS、Web(Mobile) 16 | * 插件兼容:支持Flutter 2.0,空安全 17 | 18 | ## 项目截图 19 | 20 | 23 | 26 | 29 | 30 | ## 项目视频 31 | 32 | [点我查看(Demo)](https://dev-storage.huic.top/video_player_library/Video/Demo.mp4) 33 | [点我查看(线上项目)](https://dev-storage.huic.top/video_player_library/Video/%E8%B6%B3%E8%B6%A3%E7%A4%BE%E5%8C%BA.mp4) 34 | 35 | ## Demo下载 36 | 37 | > 由于Demo无法上架,故仅支持Android Demo下载。 38 | 39 | 40 | 41 | ## 使用文档 42 | 43 | [点击查看使用文档](https://github.com/JiangJuHong/FlutterVideoPlayerLibrary-Desc/tree/main/docs) 44 | 45 | ## 功能与定价 46 | 47 | 购买链接: [点击这里](http://wpa.qq.com/msgrd?v=3&uin=690717394&site=qq&menu=yes) 48 | 联系客服: [点击这里](http://wpa.qq.com/msgrd?v=3&uin=690717394&site=qq&menu=yes) 49 | 50 | | 功能列表 | 专业版 | 51 | | :----------------- | :----- | 52 | | 视频播放 | ✅ | 53 | | 倍速播放 | ✅ | 54 | | 窗口模式 | ✅ | 55 | | 全屏模式 | ✅ | 56 | | 多清晰度无感切换 | ✅ | 57 | | 横竖屏切换 | ✅ | 58 | | 手势控制 | ✅ | 59 | | 长按快进 | ✅ | 60 | | 音量控制 | ✅ | 61 | | 亮度控制 | ✅ | 62 | | 自定义指示器图标 | ✅ | 63 | | 自定义加载进度样式 | ✅ | 64 | | 钩子操作 | ✅ | 65 | | 锁定 | ✅ | 66 | | 价格 | 288 | 67 | 68 | ## 结尾 69 | 70 | 为什么会有这个项目? 71 | 72 | > 答:由于之前重复编写过很多系统的视频播放器,也逐一踩过不少坑,因此专门花了一大段时间来编写这个项目,把踩过的坑都避免,封装一个近乎完美的视频播放器。 73 | 74 | 为什么会收费? 75 | 76 | > 答:由于本人目前是自由职业,收入来源有限,故打造一类收费版的插件,一来维持生活,二来能够制作更精心的内容。 77 | 78 | 这个维护得怎么样? 79 | 80 | > 答:1. 出现BUG第一时间修复,修复后紧急发布。 81 | > 82 | > 答:2. 持续收集大家的建议,一直迭代该产品。 83 | 84 | 我有不明白的怎么办? 85 | 86 | > 答:如果您在集成中有任何不明白,可以通过向群内问答,热心的开发者以及我本人会在第一时间进行回复。 87 | 88 | 还有其它想说的吗? 89 | 90 | > 答:感谢大家的围观,欢迎关注我的[Github](https://github.com/JiangJuHong)账号。 91 | 92 | 93 | ## 版本变更 94 | ### 1.1.1(2022-05-16) 95 | 96 | * 增加: ExtendVideoPlayerResource 支持传递 VideoFormat(仅对network视频有效) 97 | * 增加: 资源播放失败后将自动切换资源 98 | * 移除: auto_orientation 组件,使用 SystemChrome.setPreferredOrientations 实现横竖屏切换 99 | * 调整: 代码结构调整,将 model 从 entitys 里面抽出 100 | * 修复:Android、IOS全屏黑屏的问题 101 | * 增加:ExtendVideoPlayerCoreModel 增加 ``resetResources`` 方法,支持动态的设置资源 102 | * 增加:``EventHook`` 事件钩子 103 | * 修复:切换全屏后,系统成为沉浸式模式不退出 104 | * 优化:优化播放中缓存 105 | 106 | ### 1.1.0 (2021-09-22) 107 | 108 | * 调整: 播放图标大小 109 | * 增加: ```volumeButtonDisplay``` 属性控制音量按钮是否显示(web默认为true,其它默认为false)。此属性可以控制是否静音 110 | * 增加: ``fullPlayerButtonDisplay`` 属性控制全屏播放按钮是否显示,(web默认为true,其它默认为false) 111 | * 增加: **web端支持**(移动端web,暂不支持pc web) 112 | * 增加: debug日志输出 113 | * 修复: 部分时长显示异常问题 114 | 115 | ### 1.0.1 116 | 117 | * 增加钩子,增加权限钩子 118 | * 权限钩子: 播放源切换、全屏切换 119 | 120 | ### 1.0.0 121 | * 全屏/窗口模式 122 | * 倍速播放 123 | * 分辨率切换 124 | * 锁定窗口 125 | * 自定义标题 126 | * 自定义进度条 127 | * 自定义加载动画 128 | * 空安全 -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JiangJuHong/FlutterVideoPlayerLibrary-Desc/5a834e8272fd59e174c7a345ab721a85af65d95d/docs/.nojekyll -------------------------------------------------------------------------------- /docs/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:latest 2 | WORKDIR /docs 3 | COPY . /docs 4 | RUN npm install -g docsify-cli@latest --registry http://registry.npm.taobao.org 5 | EXPOSE 3000/tcp 6 | ENTRYPOINT docsify serve . 7 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # 什么是 video_player_library 2 | 3 | video_player_library 是 Flutter 平台的视频播放器库,播放器核心基于 4 | [video player](https://pub.dev/packages/video_player) 5 | 。内置功能丰富,方便您的项目完成快速交付。 6 | 7 | > 注:部分功能不支持模拟器上运行,实际效果以真机为准。 8 | 9 | [添加 Github Star 不迷路: https://github.com/JiangJuHong/FlutterVideoPlayerLibrary-Desc](https://github.com/JiangJuHong/FlutterVideoPlayerLibrary-Desc) 10 | 11 | # 优势 12 | 13 | * 快速集成:参考文档两分钟即可接入到你的项目。 14 | * 功能丰富:支持`多源视频加载`、`窗口/全屏模式`、`清晰度切换`、`倍速切换`、`手势控制`、`横竖屏`、`音量控制`、`亮度控制`、`自定义组件`、`自定义钩子`等功能 15 | * 持续维护:项目会持续迭代,功能会越来越丰富。如果某个功能存在缺陷,将会在最短的时间内进行修复。 16 | * 跨平台性:项目支持Android和IOS、Web(Mobile) 17 | * 插件兼容:支持Flutter 2.0,空安全 18 | 19 | ## 项目效果 20 | 21 | 25 | 26 | ## Demo下载 27 | 28 | > 由于Demo无法上架,故仅支持Android Demo下载。 29 | 30 | 31 | 32 | ## 功能与定价 33 | 34 | 购买链接: 35 | [点击这里](http://wpa.qq.com/msgrd?v=3&uin=690717394&site=qq&menu=yes) 36 | 联系客服: 37 | [点击这里](http://wpa.qq.com/msgrd?v=3&uin=690717394&site=qq&menu=yes) 38 | 39 | | 功能列表 | 专业版 | 40 | |:----------------|:-----| 41 | | 视频播放 | ✅ | 42 | | 倍速播放 | ✅ | 43 | | 窗口模式 | ✅ | 44 | | 全屏模式 | ✅ | 45 | | 多清晰度无感切换 | ✅ | 46 | | 横竖屏切换 | ✅ | 47 | | 手势控制 | ✅ | 48 | | 长按快进 | ✅ | 49 | | 音量控制 | ✅ | 50 | | 亮度控制 | ✅ | 51 | | 自定义指示器图标 | ✅ | 52 | | 自定义加载进度样式 | ✅ | 53 | | 钩子操作 | ✅ | 54 | | 锁定 | ✅ | 55 | | 价格 | 288 | 56 | 57 | ## 问答环节 58 | 59 | 为什么会有这个项目? 60 | 61 | > 答:由于之前重复编写过很多系统的视频播放器,也逐一踩过不少坑,因此专门花了一大段时间来编写这个项目,把踩过的坑都避免,封装一个近乎完美的视频播放器。 62 | 63 | 为什么会收费? 64 | 65 | > 答:由于本人目前是自由职业,收入来源有限,故打造一类收费版的插件,一来维持生活,二来能够制作更精心的内容。 66 | 67 | 这个维护得怎么样? 68 | 69 | > 答:1. 出现BUG第一时间修复,修复后紧急发布。 70 | > 71 | > 答:2. 持续收集大家的建议,一直迭代该产品。 72 | 73 | 我有不明白的怎么办? 74 | 75 | > 答:如果您在集成中有任何不明白,可以通过向群内问答,热心的开发者以及我本人会在第一时间进行回复。 76 | 77 | 还有其它想说的吗? 78 | 79 | > 答:感谢大家的围观,欢迎关注我的[Github](https://github.com/JiangJuHong)账号。 80 | 81 | 82 | ## 版本变更 83 | 84 | ### 1.1.1(Dev) 85 | 86 | * 增加: ExtendVideoPlayerResource 支持传递 VideoFormat(仅对network视频有效) 87 | * 增加: 资源播放失败后将自动切换资源 88 | * 移除: auto_orientation 组件,使用 SystemChrome.setPreferredOrientations 实现横竖屏切换 89 | * 调整: 代码结构调整,将 model 从 entitys 里面抽出 90 | 91 | ### 1.1.0 (2021-09-22) 92 | 93 | * 调整: 播放图标大小 94 | * 增加: ```volumeButtonDisplay``` 属性控制音量按钮是否显示(web默认为true,其它默认为false)。此属性可以控制是否静音 95 | * 增加: ``fullPlayerButtonDisplay`` 属性控制全屏播放按钮是否显示,(web默认为true,其它默认为false) 96 | * 增加: web端支持(移动端web,暂不支持pc web) 97 | * 增加: debug日志输出 98 | * 修复: 部分时长显示异常问题 99 | 100 | ### 1.0.1 101 | 102 | * 增加钩子,增加权限钩子 103 | * 权限钩子: 播放源切换、全屏切换 104 | 105 | ### 1.0.0 106 | 107 | * 全屏/窗口模式 108 | * 倍速播放 109 | * 分辨率切换 110 | * 锁定窗口 111 | * 自定义标题 112 | * 自定义进度条 113 | * 自定义加载动画 114 | * 空安全 115 | 116 | -------------------------------------------------------------------------------- /docs/_sidebar.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | * 入门 4 | * [简介](/) 5 | * [快速开始](快速开始/) 6 | * 上手使用 7 | * [简单案例](上手使用/) 8 | * [ExtendVideoPlayer](上手使用/ExtendVideoPlayer.md) 9 | * [ExtendVideoPlayerParam](上手使用/ExtendVideoPlayerParam.md) 10 | * [ExtendVideoPlayerResource](上手使用/ExtendVideoPlayerResource) 11 | * [ExtendVideoPlayerUIParam](上手使用/ExtendVideoPlayerUIParam) 12 | * 高阶使用 13 | * [介绍](高阶使用/) 14 | * [ExtendVideoPlayerCoreModel](高阶使用/ExtendVideoPlayerCoreModel) 15 | * [ExtendVideoPlayerHooksModel](高阶使用/ExtendVideoPlayerHooksModel) 16 | * [ExtendVideoPlayerDrawerWindowModel](高阶使用/ExtendVideoPlayerDrawerWindowModel) 17 | * [ExtendVideoPlayerTipsModel](高阶使用/ExtendVideoPlayerTipsModel) 18 | * [ExtendVideoPlayerWindowModel](高阶使用/ExtendVideoPlayerWindowModel) 19 | * 关于 20 | * [关于我们](关于/) -------------------------------------------------------------------------------- /docs/images/qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JiangJuHong/FlutterVideoPlayerLibrary-Desc/5a834e8272fd59e174c7a345ab721a85af65d95d/docs/images/qrcode.png -------------------------------------------------------------------------------- /docs/images/small_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JiangJuHong/FlutterVideoPlayerLibrary-Desc/5a834e8272fd59e174c7a345ab721a85af65d95d/docs/images/small_window.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Document 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/上手使用/ExtendVideoPlayer.md: -------------------------------------------------------------------------------- 1 | ## ExtendVideoPlayer 2 | 3 | `ExtendVideoPlayer`是播放器主类,通过此播放器进行UI显示,控制播放等功能。 4 | 5 | ## 参数说明 6 | 7 | | 参数名称 | 参数类型 | 参数描述 | 默认值 | 是否必传 | 8 | | ------------ | ------------------------------------------------------------ | ------------------ | ------------------------ | -------- | 9 | | param | [ExtendVideoPlayerParam](上手使用/ExtendVideoPlayerParam.md) | 播放器自定义参数 | ExtendVideoPlayerParam() | | 10 | | resources | List\<[ExtendVideoPlayerResource](上手使用/ExtendVideoPlayerResource.md)> | 视频资源 | | 是 | 11 | | defaultIndex | int | 默认播放视频的下表 | 0 | | 12 | | full | bool | 是否开启全屏模式 | false | | -------------------------------------------------------------------------------- /docs/上手使用/ExtendVideoPlayerParam.md: -------------------------------------------------------------------------------- 1 | ## ExtendVideoPlayerParam 2 | 3 | `ExtendVideoPlayerParam`是播放器自定义参数的类。 4 | 5 | ## 参数说明 6 | 7 | | 参数名称 | 参数类型 | 参数描述 | 默认值 | 是否必传 | 8 | | ------------- | ------------------------------------------------------------ | ------------------ | -------------------------- | -------- | 9 | | autoPlay | bool | 是否自动播放 | true | | 10 | | loop | bool | 是否循环播放 | true | | 11 | | playbackSpeed | double | 倍速播放 | 1.0 | | 12 | | normalUIParam | [ExtendVideoPlayerUIParam](上手使用/ExtendVideoPlayerUIParam.md) | 正常状态下的UI参数 | ExtendVideoPlayerUIParam() | | 13 | | fullUIParam | [ExtendVideoPlayerUIParam](上手使用/ExtendVideoPlayerUIParam.md) | 全屏状态下的UI参数 | ExtendVideoPlayerUIParam() | | 14 | 15 | -------------------------------------------------------------------------------- /docs/上手使用/ExtendVideoPlayerResource.md: -------------------------------------------------------------------------------- 1 | ## ExtendVideoPlayerResource 2 | 3 | `ExtendVideoPlayerResource`是播放器对视频资源进行封装的类。 4 | 5 | ## 参数说明 6 | 7 | | 参数名称 | 参数类型 | 参数描述 | 默认值 | 是否必传 | 版本 | 8 | |:-------|:--------|:--------------------------------------------------|:------|:-------|--------| 9 | | id | String | 资源ID,使用者自定义 | | | 1.0.0 | 10 | | url | String | 视频网络地址 | | | 1.0.0 | 11 | | asset | String | 视频Asset地址 | | | 1.0.0 | 12 | | file | Stirng | 视频文件路径 | | | 1.0.0 | 13 | | label | String | 文本标签(如果您开启了切换分辨率功能,此属性则代表分辨率名称) | | | 1.0.0 | 14 | | formatHint | VideoFormat | 视频格式,仅当视频为网络URL时有效 | | | 1.1.1 | 15 | 16 | -------------------------------------------------------------------------------- /docs/上手使用/ExtendVideoPlayerUIParam.md: -------------------------------------------------------------------------------- 1 | ## ExtendVideoPlayerUIParam 2 | 3 | `ExtendVideoPlayerUIParam`是对播放器可视化相关内容进行配置的类。 4 | 5 | ## 参数说明 6 | 7 | | 参数名称 | 参数类型 | 参数描述 | 常规默认值 | 全屏默认值 | 必传 | 版本 | 8 | |:---------------------------|:-------|:----------------------------------|:---------------------------|:---------------------------|:--------|----------------------------| 9 | | volumeButtonDisplay | bool | 音量按钮是否显示,如果此内容为true,则会显示静音或非静音状态 | Web: true
Other: false | Web: true
Other: false | | 1.1.0 | 10 | | fullPlayerButtonDisplay | bool | 全屏播放按钮是否显示,如果此内容为true,则会在内容没有播放且没有锁定屏幕且没有显示操作菜单的时候显示。 | Web: true
Other: false | Web: true
Other: false | | 1.1.0 | 11 | | luckButtonDisplay | bool | 是否显示锁定按钮 | false | true | true | 1.0.0 | 12 | | fullButtonDisplay | bool | 是否显示全屏按钮 | true | false | true | 1.0.0 | 13 | | returnButtonDisplay | bool | 是否显示返回按钮 | 根据情况,如果有上一个页面则显示 | 根据情况,如果有上一个页面则显示 | true | 1.0.0 | 14 | | moreButtonDisplay | bool | 是否显示更多按钮(请勿开启,功能暂未完善) | false | false | true | 1.0.0 | 15 | | videoChangeButtonDisplay | bool | 是否显示分辨率切换按钮 | false | true | true | 1.0.0 | 16 | | playbackSpeedButtonDisplay | bool | 是否显示倍速切换按钮 | false | true | true | 1.0.0 | 17 | | enabledGesture | bool | 是否启用手势控制 | true | true | true | 1.0.0 | 18 | | title | Widget | 自定义标题 | | 常规默认值的内容 | | 1.0.0 | 19 | | loading | Widget | 自定义加载样式 | | | | 1.0.0 | 20 | | returnIcon | Widget | 自定义返回图标 | | | | 1.0.0 | 21 | | moreIcon | Widget | 自定义更多图标 | | | | 1.0.0 | 22 | | indicatorIcon | Widget | 自定义进度指示器图标 | | | | 1.0.0 | 23 | 24 | ## 快速方法 25 | 26 | 你可以使用 `ExtendVideoPlayerUIParam.full` 和 `ExtendVideoPlayerUIParam.normal` 快速创建全屏和正常模式下的UI配置 27 | -------------------------------------------------------------------------------- /docs/上手使用/README.md: -------------------------------------------------------------------------------- 1 | ## 简单案例 2 | 3 | ### 简单案例 4 | 5 | 将以下代码复制到您项目中,并将URL替换为可用的URL: 6 | 7 | > 注: 创建视频播放器,并指定一个资源,资源来源为URL 8 | 9 | ````dart 10 | ExtendVideoPlayer( 11 | resources: [ 12 | ExtendVideoPlayerResource(url: "https://dev-storage.huic.top/video_player_library/Video/Demo.mp4"), 13 | ], 14 | ) 15 | ```` 16 | 17 | 执行 `flutter run`,您将看到一个小型视频窗口 18 | 19 | 20 | 21 | ### 如果您想指定视频标题,则可以进行如下配置: 22 | 23 | ````dart 24 | ExtendVideoPlayer( 25 | resources: [ 26 | ExtendVideoPlayerResource(url: "https://dev-storage.huic.top/video_player_library/Video/Demo.mp4"), 27 | ], 28 | param: ExtendVideoPlayerParam( 29 | normalUIParam: ExtendVideoPlayerUIParam( 30 | title: Text("我是视频标题"), 31 | ), 32 | ), 33 | ) 34 | ```` 35 | 36 | ### 如果您想设置多分辨率,则可以进行如下配置: 37 | 38 | ````dart 39 | ExtendVideoPlayer( 40 | resources: [ 41 | ExtendVideoPlayerResource(url: "https://dev-storage.huic.top/video_player_library/Video/Demo.mp4", label: Text("超清")), 42 | ExtendVideoPlayerResource(url: "https://dev-storage.huic.top/video_player_library/Video/Demo.mp4", label: Text("高清")), 43 | ExtendVideoPlayerResource(url: "https://dev-storage.huic.top/video_player_library/Video/Demo.mp4", label: Text("清晰")), 44 | ExtendVideoPlayerResource(url: "https://dev-storage.huic.top/video_player_library/Video/Demo.mp4", label: Text("流畅")), 45 | ], 46 | param: ExtendVideoPlayerParam( 47 | normalUIParam: ExtendVideoPlayerUIParam( 48 | title: Text("我是视频标题"), 49 | ), 50 | ), 51 | ) 52 | ```` 53 | 54 | ### 如果您想禁用手势和禁用全屏按钮,则可以进行如下配置: 55 | 56 | ````dart 57 | ExtendVideoPlayer( 58 | resources: [ 59 | ExtendVideoPlayerResource(url: "https://dev-storage.huic.top/video_player_library/Video/Demo.mp4"), 60 | ], 61 | param: ExtendVideoPlayerParam( 62 | normalUIParam: ExtendVideoPlayerUIParam( 63 | enabledGesture: false, 64 | fullButtonDisplay: false, 65 | ), 66 | ), 67 | ) 68 | ```` 69 | 70 | > 效果实现了,如果你想指定更多参数,可以参考: [ExtendVideoPlayer](上手使用/ExtendVideoPlayer.md)。 -------------------------------------------------------------------------------- /docs/关于/README.md: -------------------------------------------------------------------------------- 1 | # 关于我们 2 | 3 | * 蒋具宏 - 全栈开发工程师 - [Github](https://github.com/JiangJuHong) 4 | * 成都汇创意科技有限公司 - [Website](https://www.huic.top) 5 | * Email - [690717394@qq.com](mailto:690717394@qq.com) 6 | * 客服 - [qq690717394](http://wpa.qq.com/msgrd?v=3&uin=690717394&site=qq&menu=yes) 7 | -------------------------------------------------------------------------------- /docs/快速开始/README.md: -------------------------------------------------------------------------------- 1 | ## 购买 2 | 3 | 如果您未购买此项目,请联系[客服](http://wpa.qq.com/msgrd?v=3&uin=690717394&site=qq&menu=yes)进行购买。 4 | 5 | ## 下载 6 | 7 | 如果您已经购买了项目,请使用``git clone``命令将项目从仓库中下载,建议下载最新稳定版,而不是开发版 8 | 9 | ## 安装 10 | 11 | 请确保您的项目为Flutter项目。此插件仅支持Flutter项目。 12 | 13 | ### 导入库文件 14 | 15 | 1. 假设您的项目结构为: 16 | 17 | ```` 18 | {project_name}/ 19 | android 20 | ios 21 | lib 22 | test 23 | pubspec.yaml 24 | ```` 25 | 26 | 2. 请在项目根路径创建文件夹`library`,当然,您也可以使用任意未存在的字符串代替。 27 | 28 | 3. 创建目录完成后,请将库文件移动到`library`,移动结束后您的项目结构应该为: 29 | 30 | ```` 31 | {project_name}/ 32 | android 33 | ios 34 | lib 35 | test 36 | library 37 | FlutterVideoPlayerLibrary 38 | lib 39 | library 40 | pubspec.yaml 41 | .metadata 42 | pubspec.yaml 43 | ```` 44 | 45 | > 由于版本迭代关系,不同版本FlutterVideoPlayerLibrary内的目录结构可能不同。 46 | 47 | 4. 当库成功被移动到您的项目当中后,请打开您的项目的 `pubspec.yaml` 文件,更改 `dependencied`部分为 48 | 49 | ````yaml 50 | dependencied: 51 | ... 52 | video_player_library: 53 | path: library/FlutterVideoPlayerLibrary 54 | ```` 55 | 56 | > 注: `...`代表您项目原有依赖。 57 | 58 | 至此,您的项目已成功集成 `FlutterVideoPlayerLibrary` 59 | 60 | ### 更新依赖 61 | 62 | 当库成功导入到项目后,您还不能使用,您还需要: 63 | 64 | 1. 如果您是使用 `Idea/Android Studio` 进行开发,请进入`pubspec.yaml`文件,并点击窗口右上角的`Pub get` 65 | 2. 如果您使用的是其它Ide,请通过命令行进入到项目根目录,然后执行: `flutter pub get` 66 | 67 | 68 | 69 | ### 使用 70 | 71 | 接下来,您可以正式进入使用环节,请点击[使用文档](上手使用/README.md)继续阅读。 -------------------------------------------------------------------------------- /docs/高阶使用/ExtendVideoPlayerCoreModel.md: -------------------------------------------------------------------------------- 1 | ## ExtendVideoPlayerCoreManager 2 | 3 | `ExtendVideoPlayerCoreManager` 是核心控制器,用于控制播放器相关内容 4 | 5 | ## 调用说明 6 | 7 | | 名称 | 方法参数 / 属性类型 | 类型 | 描述 | 使用 | 版本 | 8 | | :----------------- | ------------------------------------------------------------ | ---------- | ------------------------ | ------------------------------------ | ------ | 9 | | loadResource | Int index | 方法 | 加载资源(切换分辨率) | model.loadResource(1) | | 10 | | playIconController | AnimationController | 属性 | 播放按钮动画控制器 | model.playIconController | | 11 | | controller | VideoPlayerController | 属性 | 视频播放器控制器 | model.controller | | 12 | | isPlaying | bool | 属性 | 是否播放中 | model.isPlaying | | 13 | | isBuffering | bool | 属性 | 是否缓存中 | model.isBuffering | | 14 | | value | double | 属性 | 当前播放进度(秒) | model.value | | 15 | | maxValue | double | 属性 | 最大播放进度(秒) | model.maxValue | | 16 | | error | String | 属性 | 视频加载错误的信息 | model.error | | 17 | | pause | - | 方法 | 暂停视频播放 | model.pause() | | 18 | | play | - | 方法 | 恢复/开始 视频播放 | model.play() | | 19 | | seek | Duration | 方法 | 跳转到指定时间节点 | model.seek(Duration(seconds: 0)) | | 20 | | index | int | 属性 | 获得当前加载的资源的下标 | model.index | | 21 | | resource | ExtendVideoPlayerResource | 属性 | 获得当前加载的资源 | model.resource | | 22 | | mainWindowSize | Size | 属性 | 主窗口大小 | model.mainWindowSize | | 23 | | full | bool | 属性 | 是否全屏 | model.full | | 24 | | full | bool | 属性(设置) | 设置全屏 | model.full = true | | 25 | | uiParam | ExtendVideoPlayerUIParam | 属性 | 获得当前加载的UI参数 | model.uiParam | | 26 | | resetResources | List res, {int defaultIndex: 0, bool seekTo: false} | 方法 | 重新设置资源 | model.resetResources([],seekTo:true) | v1.1.1 | 27 | 28 | -------------------------------------------------------------------------------- /docs/高阶使用/ExtendVideoPlayerDrawerWindowModel.md: -------------------------------------------------------------------------------- 1 | ## ExtendVideoPlayerCoreDrawerWindowEntity 2 | 3 | `ExtendVideoPlayerCoreDrawerWindowEntity` 是抽屉控制器,用于抽屉内容或抽屉是否显示等 4 | 5 | ## 调用说明 6 | 7 | | 名称 | 方法参数 / 属性类型 | 类型 | 描述 | 使用 | 8 | | :------ | ------------------- | ---------- | -------------------- | -------------------------- | 9 | | display | bool | 属性 | 获得当前抽屉是否显示 | model.display | 10 | | display | bool | 属性(设置) | 设置当前抽屉是否显示 | mdel.display = true | 11 | | widget | Widget | 属性 | 获得当前抽屉的组件 | model.widget | 12 | | widget | Widget | 属性(设置) | 设置当前抽屉的组件 | model.widget = Text("123") | 13 | 14 | -------------------------------------------------------------------------------- /docs/高阶使用/ExtendVideoPlayerHooksModel.md: -------------------------------------------------------------------------------- 1 | ## ExtendVideoPlayerCoreHooksManager 2 | 3 | `ExtendVideoPlayerCoreHooksManager` 4 | 是钩子控制器,用于对播放器操作控制或记录监听。 5 | 6 | 钩子的使用很简单,你只需要获得钩子管理器后进行注册/移出钩子即可,关于如何获得钩子管理器,请参考:[获得控制器](/高阶使用/README.md#获得控制器)。 7 | 8 | 当获得钩子管理器后可以执行注册/移出钩子操作,示例代码(以权限钩子为例): 9 | 10 | ````dart 11 | /// 自定义权限钩子 12 | class CustomPermissionsHook extends PermissionsHook{ 13 | 14 | /// 当此方法返回false时,将不允许本次权限,那么就无法进行设置全屏操作 15 | @override 16 | bool changeFull(bool full) => false; 17 | } 18 | 19 | class Main{ 20 | 21 | CustomPermissionsHook hook = CustomPermissionsHook(); 22 | 23 | /// 注册钩子 24 | void reg(){ 25 | _hooksManager.registerHook(hook); 26 | } 27 | 28 | /// 移出钩子 29 | void remove(){ 30 | _hooksManager.removeHook(hook); 31 | } 32 | 33 | } 34 | 35 | ```` 36 | 37 | > 不同的钩子类型将提供不同的操作,例如权限控制钩子是允许你对操作进行限制,比如是平台VIP才能进行切换播放源,就可以通过权限控制钩子对非VIP进行限制。 38 | 39 | 目前支持的钩子类型: 40 | 41 | ### PermissionsHook 42 | 43 | 权限控制钩子,用来对操作进行限制,例如:允许/禁止全屏,允许/禁止切换分辨率。 44 | 权限控制钩子中,所有方法的返回值均是bool,代表是否允许执行此操作,返回true代表允许,返回false代表不允许。 45 | 46 | | 方法名称 | 参数描述 | 方法描述 | 47 | |:---------------------|:-------------------------------------------------------------------------------------------------------|:----------------| 48 | | changePlaybackSource | ExtendVideoPlayerResource oldResource: 正在播放的资源
ExtendVideoPlayerResource newResource: 目标资源 | 切换播放源时触发 | 49 | | changeFull | bool full: 是否是全屏 | 切换/取消全屏时触发 | 50 | 51 | ### EventHook 52 | 53 | 事件钩子,用来通知用户某事件的发生 54 | 1. 此钩子仅用于通知,并不会阻止某事件的发生,如果想要阻止某事件发生,请使用 [PermissionsHook] 55 | 2. 此钩子仅实现纯通知事件的内容, 56 | 57 | | 方法名称 | 参数描述 | 方法描述 | 版本 | 58 | |:---------------------|:-------------------------------------------------------------------------------------------------------|:----------------|----------------------| 59 | | resourceLoadComplete | ExtendVideoPlayerResource resource: 加载完成的资源 | 资源加载完成 | v1.1.1 | 60 | | resourceLoadFailed | ExtendVideoPlayerResource resource: 加载失败的资源
Object error: 错误信息 | 资源加载失败 | v1.1.1 | 61 | | playerProgress | ExtendVideoPlayerResource resource: 播放的资源
Duration? position: 当前时间
Duration? duration: 总时间 | 播放进度事件 | v1.1.1 | 62 | | playerEnd | ExtendVideoPlayerResource resource: 资源对象 | 资源播放结束事件 | v1.1.1 | 63 | -------------------------------------------------------------------------------- /docs/高阶使用/ExtendVideoPlayerTipsModel.md: -------------------------------------------------------------------------------- 1 | ## ## ExtendVideoPlayerCoreTipsWindowEntity 2 | 3 | `ExtendVideoPlayerCoreTipsWindowEntity` 是提示控制器,用于显示提示信息 4 | 5 | ## 调用说明 6 | 7 | | 名称 | 方法参数 / 属性类型 | 类型 | 描述 | 使用 | 8 | | :--------------------- | ----------------------------- | ---------- | ---------------------- | ----------------------------------------------------- | 9 | | type | ExtendVideoPlayerTipsTypeEnum | 属性 | 获得当前提示类型 | model.type | 10 | | type | ExtendVideoPlayerTipsTypeEnum | 属性(设置) | 设置当前提示类型 | model.type = ExtendVideoPlayerTipsTypeEnum.TimeChange | 11 | | value | double | 属性 | 获得当前提示的值 | model.value | 12 | | value | double | 属性(设置) | 设置当前提示的值 | model.value = 1 | 13 | | maxValue | double | 属性 | 获得当前提示最大值 | model.maxValue | 14 | | maxValue | double | 属性(设置) | 设置当前提示最大值 | model.maxValue = 100 | 15 | | resetVolumeNoOptTime | - | 方法 | 重置音量未操作时的计时 | model.resetVolumeNoOptTime() | 16 | | volumeCountDownControl | CountDownControl | 属性 | 获得音量倒计时 | model.volumeCountDownControl | 17 | 18 | -------------------------------------------------------------------------------- /docs/高阶使用/ExtendVideoPlayerWindowModel.md: -------------------------------------------------------------------------------- 1 | ## ## ExtendVideoPlayerCoreWindowEntity 2 | 3 | `ExtendVideoPlayerCoreWindowEntity` 是界面制器,用于控制主操作界面 4 | 5 | ## 调用说明 6 | 7 | | 名称 | 方法参数 / 属性类型 | 类型 | 描述 | 使用 | 8 | | :------------------- | ------------------- | ---------- | ---------------------- | -------------------------- | 9 | | display | bool | 属性 | 获得当前界面是否显示 | model.display | 10 | | display | bool | 属性(设置) | 设置当前界面是否显示 | mdel.display = true | 11 | | luck | Bool | 属性 | 获得当前界面是否锁定 | model.luck | 12 | | luck | Bool | 属性(设置) | 设置当前界面是否锁定 | model.luck = true | 13 | | resetWindowNoOptTime | - | 方法 | 重置没有操作时的计时器 | model.resetWindowNoOptTime | -------------------------------------------------------------------------------- /docs/高阶使用/README.md: -------------------------------------------------------------------------------- 1 | ## 介绍 2 | 3 | > 如果您不熟悉控制器的操作,请勿进行脏调用,避免出现预期之外的效果 4 | 5 | ### 可进行的操作 6 | 7 | 如果只是调试UI界面等功能不能满足您的业务需求,你还可以根据内部对象进行例如下面的操作: 8 | 9 | * 控制视频功能(播放、暂停、跳转、切换分辨率、倍速等) 10 | * 控制界面功能(显示或隐藏,全屏或非全屏) 11 | 12 | ### 控制器 13 | 14 | 此库中所有的控制操作均是使用`Model`来进行的,也就是说您可以通过调用`Model`中的方法或变更`Model`的参数来达到您想要的效果。 15 | 16 | 此库拥有如下几种控制器: 17 | 18 | [ExtendVideoPlayerCoreModel](高阶使用/ExtendVideoPlayerCoreModel) 核心控制器 19 | 20 | [ExtendVideoPlayerHooksModel](高阶使用/ExtendVideoPlayerHookModel) 钩子控制器 21 | 22 | [ExtendVideoPlayerDrawerWindowModel](高阶使用/ExtendVideoPlayerDrawerWindowModel) 抽屉控制器 23 | 24 | [ExtendVideoPlayerTipsModel](高阶使用/ExtendVideoPlayerTipsModel) 提示控制器 25 | 26 | [ExtendVideoPlayerWindowModel](高阶使用/ExtendVideoPlayerWindowModel) 窗口控制器 27 | 28 | ### 获得控制器 29 | 30 | 为了防止控制器太多不利于维护,因此我们通过`ExtendVideoPlayerModelGroup`来对控制器进行集中管理,只要您获得了`ExtendVideoPlayerModelGroup`的引用,那么就能获得所有控制器。您可以通过以下案例来获得`ExtendVideoPlayerModelGroup`: 31 | 32 | ````dart 33 | class VideoPlayerWidgetState extends State { 34 | /// 视频播放器全局key 35 | final GlobalKey _extendVideoPlayerKey = GlobalKey(); 36 | 37 | void _getModelGroup(){ 38 | ExtendVideoPlayerModelGroup modelGroup = _extendVideoPlayerKey.currentState.modelGroup; 39 | } 40 | 41 | @override 42 | Widget build(BuildContext context) { 43 | return ExtendVideoPlayer( 44 | key: this._extendVideoPlayerKey, 45 | resources: [ 46 | ExtendVideoPlayerResource(url: "视频URL地址"), 47 | ], 48 | param: ExtendVideoPlayerParam( 49 | normalUIParam: ExtendVideoPlayerUIParam(returnButtonDisplay: false), 50 | ), 51 | ); 52 | } 53 | } 54 | ```` 55 | 56 | 1. `GlobalKey _extendVideoPlayerKey = GlobalKey()` 定义全局Key,方便获取状态对象 57 | 2. `key: this._extendVideoPlayerKey`将全局Key引用传递给视频播放器 58 | 3. `ExtendVideoPlayerModelGroup modelGroup = _extendVideoPlayerKey.currentState.modelGroup`通过全局Key获得`ExtendVideoPlayerModelGroup`的引用 59 | 60 | 获得引用后,你可以分别使用以下代码来获得不同的管理器: 61 | 62 | [ExtendVideoPlayerCoreModel](高阶使用/ExtendVideoPlayerCoreModel) 63 | 64 | > modelGroup.manager 65 | 66 | [ExtendVideoPlayerHooksModel](高阶使用/ExtendVideoPlayerHooksModel) 67 | 68 | > modelGroup.hooksManager 69 | 70 | [ExtendVideoPlayerDrawerWindowModel](高阶使用/ExtendVideoPlayerDrawerWindowModel) 71 | 72 | > modelGroup.drawerModel 73 | 74 | [ExtendVideoPlayerTipsModel](高阶使用/ExtendVideoPlayerTipsModel) 75 | 76 | > modelGroup.tipsModel 77 | 78 | [ExtendVideoPlayerWindowModel](高阶使用/ExtendVideoPlayerWindowModel) 79 | 80 | > modelGroup.windowModel 81 | 82 | 如果您想查看管理器的具体使用,请查看对应管理器的文档。 83 | 84 | --------------------------------------------------------------------------------