# flutter_tencentplayer
**Repository Path**: Mockingbirdcc/flutter_tencentplayer
## Basic Information
- **Project Name**: flutter_tencentplayer
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-02-02
- **Last Updated**: 2021-02-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
##### 作者其他文章推荐:
###### [九、Flutter上线项目实战——图片视频预览](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter上线项目实战——图片视频预览.md)
###### [八、Flutter上线项目实战——环信客服插件](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter%E4%B8%8A%E7%BA%BF%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E2%80%94%E2%80%94%E7%8E%AF%E4%BF%A1%E5%AE%A2%E6%9C%8D%E6%8F%92%E4%BB%B6.md)
###### [七、Flutter上线项目实战——队列任务](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter%E4%B8%8A%E7%BA%BF%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E2%80%94%E2%80%94%E9%98%9F%E5%88%97%E4%BB%BB%E5%8A%A1.md)
###### [六、Flutter上线项目实战——即时通讯Protobuf](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter%E4%B8%8A%E7%BA%BF%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E2%80%94%E2%80%94%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AFProtobuf.md)
###### [五、Flutter上线项目实战——即时通讯端对端加密(E2E)](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter%E4%B8%8A%E7%BA%BF%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E2%80%94%E2%80%94%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF%E7%AB%AF%E5%AF%B9%E7%AB%AF%E5%8A%A0%E5%AF%86(E2E).md)
###### [四、Flutter上线项目实战——苹果内购](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter%E4%B8%8A%E7%BA%BF%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E2%80%94%E2%80%94%E8%8B%B9%E6%9E%9C%E5%86%85%E8%B4%AD.md)
###### [三、Flutter上线项目实战——腾讯点播直播下载](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter%E4%B8%8A%E7%BA%BF%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E2%80%94%E2%80%94%E8%85%BE%E8%AE%AF%E7%82%B9%E6%92%AD%E7%9B%B4%E6%92%AD%E4%B8%8B%E8%BD%BD.md)
###### [二、Flutter上线项目实战——防止录屏](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter%E4%B8%8A%E7%BA%BF%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E2%80%94%E2%80%94%E9%98%B2%E6%AD%A2%E5%BD%95%E5%B1%8F.md)
###### [一、Flutter上线项目实战——路由篇](https://github.com/qq326646683/tech-article/blob/master/flutter/Flutter%E4%B8%8A%E7%BA%BF%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E2%80%94%E2%80%94%E8%B7%AF%E7%94%B1%E7%AF%87.md)
##### 正文:
线上项目应用运行效果:
http://file.jinxianyun.com/tencentplayer.MP4
demo apk:
http://file.jinxianyun.com/flutter_tencentplayer_0_11_0.apk
# 0.Tip
1. 必须真机
2. android打release包必须加--no-shrink: flutter build apk --release --no-shrink
# 1.Setup
```
flutter_tencentplayer: ${last_version}
or
flutter_tencentplayer:
git:
url: https://github.com/qq326646683/flutter_tencentplayer.git
```
> For Android
1. project/android/build.gradle 添加依赖的aar:
```gradle
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs "${plugins.get("flutter_tencentplayer")}android/libs"
}
}
}
```
2. AndroidManifest.xml 声明权限:
```
```
> For Ios
```
//项目的info.plist文件上添加如下权限
NSAppTransportSecurity
NSAllowsArbitraryLoads
```
# 2.Usage(TencentPlayer)
> 和video_player api相似,支持直播源,视频跳转,切换视频源,边下边播放,清晰度切换,设置播放速度
### 1.初始化播放器,支持asset、network、filePath、fileId四种方式播放
```dart
TencentPlayerController _controller;
_MyAppState() {
listener = () {
if (!mounted) {
return;
}
setState(() {});
};
}
initState() {
_controller = TencentPlayerController.network('http://file.jinxianyun.com/testhaha.mp4', playerConfig: PlayerConfig())
//_controller = TencentPlayerController.asset('static/tencent1.mp4')
//_controller = TencentPlayerController.file('/storage/emulated/0/test.mp4')
//_controller = TencentPlayerController.network(null, playerConfig: {auth: {"appId": 1252463788, "fileId": '4564972819220421305'}})
..initialize().then((_) {
setState(() {});
});
_controller.addListener(listener);
}
```
### 2.PlayerConfig (播放器配置参数 )
```dart
_controller = TencentPlayerController.network(url, playerConfig: PlayerConfig())
```
Prop | Type | Default | Note
---|---|---|---
autoPlay | bool | true | 是否自动播放
loop | bool | false | 是否循环播放
headers | Map | | 请求头
cachePath | String | | 缓存路径(边播放边下载)
progressInterval | int | 1 | 播放进度回调频率(秒)
startTime | int | 0 | 哪里开始播放(秒)
auth | Map | | 云点播视频源appId&fileId
supportBackground | bool | false | 是否后台播放
### 3.TencentPlayerValue (播放器回调)
```dart
Text("总时长:" + _controller.value.duration.toString())
```
Prop | Type | Note
---|---|---
initialized | bool | 是否初始化完成从而显示播放器
aspectRatio | double | 用来控制播放器宽高比
duration | Duration | 时长
position | Duration | 播放进度
playable | Duration | 缓冲进度
isPlaying | bool | 是否在播放
size | Size | 视频宽高
isLoading | bool | 是否在加载
netSpeed | int | 视频播放网速
rate | double | 播放速度
bitrateIndex | int | 视频清晰度
orientation | int | 手机旋转角度(android only)
degree | int | 本地file视频自带旋转属性
eventCode | int | 事件监听code
### 4.Event (播放器事件)
a.跳转进度
```dart
_controller.seekTo(Duration(seconds: 5));
```
b.设置播放速度
```dart
_controller.setRate(1.5); // 1.0 ~ 2.0
```
c.切换播放源
```dart
controller?.removeListener(listener);
controller?.pause();
controller = TencentPlayerController.network(url, playerConfig: PlayerConfig(startTime: startTime ?? controller.value.position.inSeconds));
controller?.initialize().then((_) {
if (mounted) setState(() {});
});
controller?.addListener(listener);
```
d.切换清晰度(实质就是切换播放源)
# 3.Usage(Download)
> 离线下载, 支持断点续传(这里只支持m3u8视频、fileId), 支持多文件同时下载
### 1.初始化下载器
```dart
DownloadController _downloadController;
_MyAppState() {
downloadListener = () {
if (!mounted) {
return;
}
setState(() {});
};
}
initState() {
_downloadController = DownloadController('/storage/emulated/0/tencentdownload', appId: 1252463788);
_downloadController.addListener(downloadListener);
}
```
### 2.Event (下载事件)
a. 下载
```dart
_downloadController.dowload("4564972819220421305", quanlity: 2);
// _downloadController.dowload("http://1253131631.vod2.myqcloud.com/26f327f9vodgzp1253131631/f4bdff799031868222924043041/playlist.m3u8");
```
b. 暂停下载
```dart
_downloadController.pauseDownload("4564972819220421305");
// _downloadController.stopDownload("http://1253131631.vod2.myqcloud.com/26f327f9vodgzp1253131631/f4bdff799031868222924043041/playlist.m3u8");
```
b. 取消下载
```dart
_downloadController.cancelDownload("4564972819220421305");
// _downloadController.cancelDownload("http://1253131631.vod2.myqcloud.com/26f327f9vodgzp1253131631/f4bdff799031868222924043041/playlist.m3u8");
```
### 3.DownloadValue (下载信息回调)
>因为支持多文件同时下载,回调以Map返回,key为url/fileId
Prop | Type | Note
---|---|---
downloadStatus | String | "start"、"progress"、"stop"、"complete"、"error"
quanlity | int | 1: "FLU"、2: "SD"、3: "HD"、4: "FHD"、5: "2K"、6: "4K"
duration | int |
size | int | 文件大小
downloadSize | int | 已下载大小
progress | int | 已下载大小
playPath | String | 下载文件的绝对路径
isStop | bool | 是否暂停下载
url | String | 下载的视频链接
fileId | String | 下载的视频FileId
error | String | 下载的错误信息
# 4.[Example](https://github.com/qq326646683/flutter_tencentplayer/blob/master/example/lib/main.dart)
# 5.Note
> 1. flutter1.10+ android打包命令:
```
flutter build apk --release --no-shrink
```