alert()的功能_功能强大的Flutter 视频播放插件
簡介
flutter_tencentplayer_plus 是基于騰訊云點播封裝的flutter版的播放器插件 提供video_player 相似的api, 是flutter_tencentplayer的優化版本 ,flutter_tencentplayer 開源項目是我和大帥一起合作的一個開源項目,
支持功能
支持直播源
視頻跳轉
切換視頻源
邊下邊播放
清晰度切換
設置播放速度
效果圖
1.Setup
flutter_tencentplayer_plus: ${last_version}or
flutter_tencentplayer_plus:
git:
url: https://github.com/yxwandroid/flutter_tencentplayer_plus.git
For Android
project/android/build.gradle 添加依賴的aar:
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"
}
}
}
AndroidManifest.xml 聲明權限:
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />For Ios?
//項目的info.plist文件上添加如下權限<key>NSAppTransportSecuritykey><dict><key>NSAllowsArbitraryLoadskey><true/>dict>
2.Usage(TencentPlayer)
1.初始化播放器
提供 asset、network、filePath、fileId四種方式播放
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?(播放器配置參數 )
_controller = TencentPlayerController.network(url, playerConfig: PlayerConfig())| autoPlay | bool | true | 是否自動播放 |
| loop | bool | false | 是否循環播放 |
| headers | Map | 請求頭 | |
| cachePath | String | 緩存路徑(邊播放邊下載) | |
| progressInterval | int | 200 | 播放進度回調頻率(毫秒) |
| startTime | int | 0 | 哪里開始播放(秒) |
| auth | Map | 云點播視頻源appId&fileId |
3.TencentPlayerValue?(播放器回調)
Text("總時長:" + _controller.value.duration.toString())| initialized | bool | 是否初始化完成從而顯示播放器 |
| aspectRatio | double | 用來控制播放器寬高比 |
| duration | Duration | 時長 |
| position | Duration | 播放進度 |
| playable | Duration | 緩沖進度 |
| isPlaying | bool | 是否在播放 |
| size | Size | 視頻寬高 |
| isLoading | bool | 是否在加載 |
| netSpeed | int | 視頻播放網速 |
| rate | double | 播放速度 |
| bitrateIndex | int | 視頻清晰度 |
4.Event?(播放器事件)
a.跳轉進度
_controller.seekTo(Duration(seconds: 5));b.設置播放速度
_controller.setRate(1.5); // 1.0 ~ 2.0c.切換播放源
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.初始化下載器
DownloadController _downloadController;_MyAppState() {
downloadListener = () {
if (!mounted) {
return;
}
setState(() {});
};
}
initState() {
_downloadController = DownloadController('/storage/emulated/0/tencentdownload', appId: 1252463788);
_downloadController.addListener(downloadListener);
}
2.Event?(下載事件)
a. 下載
_downloadController.dowload("4564972819220421305", quanlity: 2);// _downloadController.dowload("http://1253131631.vod2.myqcloud.com/26f327f9vodgzp1253131631/f4bdff799031868222924043041/playlist.m3u8");
b. 暫停下載
_downloadController.pauseDownload("4564972819220421305");// _downloadController.stopDownload("http://1253131631.vod2.myqcloud.com/26f327f9vodgzp1253131631/f4bdff799031868222924043041/playlist.m3u8");
b. 取消下載
_downloadController.cancelDownload("4564972819220421305");// _downloadController.cancelDownload("http://1253131631.vod2.myqcloud.com/26f327f9vodgzp1253131631/f4bdff799031868222924043041/playlist.m3u8");
3.DownloadValue?(下載信息回調)
因為支持多文件同時下載,回調以Map返回,key為url/fileId
| 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
5.更新內容
1,升級android,IOS LiteAVSDK 6.8.79696.參考
騰訊云點播android本:
?https://github.com/tencentyun/SuperPlayer_Android/wiki
騰訊云點播ios版本:
?https://github.com/tencentyun/SuperPlayer_iOS
flutter_tencentplayer :
https://github.com/qq326646683/flutter_tencentplayer
總結
以上是生活随笔為你收集整理的alert()的功能_功能强大的Flutter 视频播放插件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器挂起文件怎么删除,撤消挂起的更改或
- 下一篇: java 连接janusgraph_基于