Flutter视频播放插件iqplayer的使用
Flutter视频播放插件iqplayer的使用
IQPlayer
简单带有字幕的视频播放器,为Flutter编写。
这个包是我送给我的老师和领导 Mr. Muqtada Al-Sadr 的礼物。
基于 BLoC 高兴地构建。
特性
- ✅ 可以从Assets、文件、网络播放视频(通过
VideoPlayerController
) - ✅ 解析来自Assets、文件、网络的字幕(通过
SubtitleProvider
类) - ✅ 使用
IQTheme
类自定义主题 - ✅ 支持字幕:
- ✅ VTT格式
- ❌ SRT格式
- ❌ 用户自定义格式
- ✅ IQScreen: 一个包含视频播放器的屏幕框架
- ❌ IQPlayer: 一个使您可以在屏幕上观看视频的widget(目前在开发中)
- ✅ IQParser: 一个包含字幕视图的字幕包,包括widget和解析器
- ✅ IQTheme: 用于对播放器UI进行定制,使其与您的应用程序更兼容
安装
1. 添加依赖
在 pubspec.yaml
文件中添加依赖:
dependencies:
iqplayer: <最新版本>
然后从命令行安装包:
flutter pub get
2. 配置权限
Android
确保在 AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET"/>
iOS
警告:视频播放器在iOS模拟器上不可用。必须在真实设备上进行开发和测试。
在 Info.plist
文件中添加以下条目:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
这将允许您的应用通过URL访问视频文件。
3. 导入
在Dart文件中导入:
import "package:iqplayer/iqplayer.dart";
组件
- IQScreen:
IQScreen(
videoPlayerController: VideoPlayerController.network(""),
subtitleProvider: SubtitleProvider.fromNetwork(""),
title: "Simple Video",
description: "Simple Description",
);
- IQPlayer:
目前在开发中。
- IQParser:
注意:它会自动与
IQScreen
一起使用,您可以使用SubtitleProvider
显示数据。
BlocProvider<SubtitleBloc>(
create: (context) =>
SubtitleBloc(
SubtitleProvider.fromNetwork(""),
)..add(FetchSubtitles()),
child: MyParser(),
);
注意:您可以排除
MyParser
并删除它!
注意:为什么创建
MyParser
?参见这里
- IQTheme:
注意:您可以使用此类对
IQScreen
、IQPlayer
或IQParser
进行主题定制。
您有+17种选项来定制主题!
IQScreen(
...
iqTheme: IQTheme(
...
),
);
使用
- 使用
IQScreen
与Navigator
:
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) => IQScreen(
title: "",
description: "",
videoPlayerController: VideoPlayerController.network(""),
subtitleProvider: SubtitleProvider.fromNetwork(""),
),
),
);
- 使用
IQParser
:
您必须使用
BlocProvider
和SubtitleProvider
来配置字幕。
// 在您的widget中
BlocProvider<SubtitleBloc>(
create: (context) =>
SubtitleBloc(
SubtitleProvider.fromNetwork(""),
)..add(FetchSubtitles()),
child: MyParser(),
);
// 新的parser类,您可以排除 `MyParser`
class MyParser extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return IQParser();
}
}
注意:您可以排除
MyParser
并删除它!
注意:为什么创建
MyParser
?参见这里
- 您可以使用
IQTheme
自定义UI,例如:
您有+17种选项来定制主题!
IQTheme(
loadingProgress: SpinKitCircle(
color: Colors.red,
),
playButtonColor: Colors.transparent,
videoPlayedColor: Colors.indigo,
playButton: (bool isPlay) {
if (isPlay)
return Icon(
Icons.pause_circle_filled,
color: Colors.red,
size: 50,
);
return Icon(
Icons.play_circle_outline,
color: Colors.red,
size: 50,
);
},
);
示例
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:iqplayer/iqplayer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'IQPlayer Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'IQPlayer Demo'),
);
}
}
class MyHomePage extends StatelessWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),
),
body: Center(
child: RaisedButton(
child: Text('Open IQPlayer'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) => IQScreen(
title: title,
description: 'Simple video as a demo video',
videoPlayerController: VideoPlayerController.network(
'https://d11b76aq44vj33.cloudfront.net/media/720/video/5def7824adbbc.mp4',
),
subtitleProvider: SubtitleProvider.fromNetwork(
'https://duoidi6ujfbv.cloudfront.net/media/0/subtitles/5675420c9d9a3.vtt'),
iqTheme: IQTheme(
loadingProgress: SpinKitCircle(
color: Colors.red,
),
playButtonColor: Colors.transparent,
videoPlayedColor: Colors.indigo,
playButton: (bool isPlay) {
if (isPlay)
return Icon(
Icons.pause_circle_filled,
color: Colors.red,
size: 50,
);
return Icon(
Icons.play_circle_outline,
color: Colors.red,
size: 50,
);
},
),
),
),
);
},
),
),
);
}
}
更多关于Flutter视频播放插件iqplayer的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter视频播放插件iqplayer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
iqplayer
是一个用于在 Flutter 应用中播放视频的插件。它基于 video_player
插件,但提供了更多的功能和自定义选项,例如自定义播放器界面、播放速度控制、亮度控制等。
以下是如何在 Flutter 项目中使用 iqplayer
的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 iqplayer
依赖:
dependencies:
flutter:
sdk: flutter
iqplayer: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在你的 Dart 文件中导入 iqplayer
包:
import 'package:iqplayer/iqplayer.dart';
3. 使用 IqPlayer
插件
IqPlayer
是一个可以直接使用的视频播放器组件。你可以在你的应用中直接使用它来播放视频。
class MyVideoPlayer extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Video Player'),
),
body: Center(
child: IqPlayer(
controller: IqPlayerController.network(
'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4',
),
autoPlay: true,
looping: true,
),
),
);
}
}
4. IqPlayerController
IqPlayerController
用于控制视频的播放、暂停、停止等操作。你可以通过 IqPlayerController.network
来加载网络视频,或者使用 IqPlayerController.file
来加载本地文件。
IqPlayerController.network(
'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4',
)
5. 自定义播放器界面
iqplayer
提供了自定义播放器界面的功能。你可以通过 IqPlayerController
来控制视频的播放状态,并通过 IqPlayer
的 controls
属性来自定义播放器界面。
IqPlayer(
controller: IqPlayerController.network(
'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4',
),
controls: const IqMaterialControls(),
autoPlay: true,
looping: true,
)
6. 其他功能
iqplayer
还支持以下功能:
- 播放速度控制:可以通过
IqPlayerController
的setPlaybackSpeed
方法来设置播放速度。 - 亮度控制:可以通过
IqPlayerController
的setBrightness
方法来调整亮度。 - 音量控制:可以通过
IqPlayerController
的setVolume
方法来调整音量。
7. 处理播放器事件
你可以通过 IqPlayerController
监听播放器事件,例如视频加载完成、播放完成等。
controller.addListener(() {
if (controller.value.isPlaying) {
// 视频正在播放
} else {
// 视频暂停或停止
}
});
8. 释放资源
在 IqPlayerController
使用完毕后,确保调用 dispose
方法释放资源。
[@override](/user/override)
void dispose() {
controller.dispose();
super.dispose();
}