Flutter视频播放器插件custom_better_player的使用
Flutter视频播放器插件custom_better_player的使用
Better Player
基于video_player
和Chewie
的高级视频播放器。它解决了许多典型用例,并且易于运行。
引言
该插件基于Chewie
。Chewie
是一个非常棒的插件,在许多情况下表现良好。Better Player
是Chewie
所引入思想的延续。Better Player
修复了常见的错误,增加了更多的配置选项,并解决了典型的用例。
特性:
- ✔️ 修复常见错误
- ✔️ 增加高级配置选项
- ✔️ 重构播放器控件
- ✔️ 支持播放列表
- ✔️ 在
ListView
中支持视频 - ✔️ 支持字幕(格式:SRT,WEBVTT,支持HTML标签;从HLS获取字幕;视频多字幕)
- ✔️ 支持HTTP头
- ✔️ 支持
BoxFit
视频 - ✔️ 支持播放速度
- ✔️ 支持HLS(轨道,字幕(分段),音频轨道选择)
- ✔️ 支持DASH(轨道,字幕,音频轨道选择)
- ✔️ 支持替代分辨率
- ✔️ 支持缓存
- ✔️ 支持通知
- ✔️ 支持画中画
- ✔️ 支持DRM(令牌,Widevine,FairPlay EZDRM)。
- ✔️ 更多功能…
文档
重要信息
该插件仍在开发中。每个版本可能会有破坏性更改。该插件是免费的兼职开发。如果你需要一些由其他在pub dev上的播放器支持的功能,那么你可以创建PR。所有有价值的贡献都欢迎!
使用示例
主程序文件
import 'package:custom_better_player_example/pages/welcome_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Shortcuts(
shortcuts: <LogicalKeySet, Intent>{
LogicalKeySet(LogicalKeyboardKey.select): const ActivateIntent(),
},
child: MaterialApp(
title: 'Better player demo',
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en', 'US'),
const Locale('pl', 'PL'),
],
theme: ThemeData(
primarySwatch: Colors.green,
),
home: WelcomePage(),
));
}
}
欢迎页面文件
import 'package:flutter/material.dart';
import 'package:custom_better_player/custom_better_player.dart';
class WelcomePage extends StatefulWidget {
[@override](/user/override)
_WelcomePageState createState() => _WelcomePageState();
}
class _WelcomePageState extends State<WelcomePage> {
// 初始化BetterPlayerController
BetterPlayerController _betterPlayerController;
[@override](/user/override)
void initState() {
super.initState();
// 设置控制器
_betterPlayerController = BetterPlayerController(BetterPlayerConfiguration(
aspectRatio: 16 / 9,
));
// 设置视频源
_betterPlayerController.setupDataSource(BetterPlayerDataSource(
BetterPlayerDataSourceType.network,
"https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4",
));
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Better Player Demo"),
),
body: Center(
child: // 使用BetterPlayer组件
BetterPlayer(
controller: _betterPlayerController,
),
),
);
}
}
更多关于Flutter视频播放器插件custom_better_player的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter视频播放器插件custom_better_player的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
custom_better_player
是一个基于 better_player
的 Flutter 视频播放器插件,提供了更多的自定义选项和功能。它支持多种视频格式、字幕、播放速度控制、画中画、全屏播放等功能。以下是如何在 Flutter 项目中使用 custom_better_player
的基本步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 custom_better_player
依赖:
dependencies:
flutter:
sdk: flutter
custom_better_player: ^0.0.3 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在你的 Dart 文件中导入 custom_better_player
包:
import 'package:custom_better_player/custom_better_player.dart';
3. 基本使用
你可以使用 CustomBetterPlayer
组件来播放视频。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:custom_better_player/custom_better_player.dart';
class VideoPlayerScreen extends StatefulWidget {
[@override](/user/override)
_VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}
class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
late CustomBetterPlayerController _controller;
[@override](/user/override)
void initState() {
super.initState();
initializePlayer();
}
void initializePlayer() {
var dataSource = CustomBetterPlayerDataSource(
CustomBetterPlayerDataSourceType.network,
"https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4",
);
_controller = CustomBetterPlayerController(
CustomBetterPlayerConfiguration(),
betterPlayerDataSource: dataSource,
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Custom Better Player'),
),
body: Column(
children: [
AspectRatio(
aspectRatio: 16 / 9,
child: CustomBetterPlayer(
controller: _controller,
),
),
],
),
);
}
}
4. 自定义配置
CustomBetterPlayerConfiguration
允许你自定义播放器的各种配置。例如,你可以设置自动播放、循环播放、全屏选项等:
CustomBetterPlayerConfiguration(
autoPlay: true,
looping: true,
fullScreenByDefault: false,
allowedScreenSleep: false,
controlsConfiguration: CustomBetterPlayerControlsConfiguration(
showControls: true,
enableProgressBar: true,
enablePlayPause: true,
enableFullscreen: true,
),
)
5. 处理全屏模式
custom_better_player
支持全屏播放。你可以通过 CustomBetterPlayerController
来处理全屏模式:
_controller.enterFullScreen();
_controller.exitFullScreen();
6. 添加字幕
你可以通过 CustomBetterPlayerSubtitlesSource
来添加字幕:
var dataSource = CustomBetterPlayerDataSource(
CustomBetterPlayerDataSourceType.network,
"https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4",
subtitles: [
CustomBetterPlayerSubtitlesSource(
type: CustomBetterPlayerSubtitlesSourceType.network,
name: "English",
urls: ["https://www.example.com/subtitles_en.vtt"],
),
],
);
7. 处理播放事件
你可以监听播放器的事件,例如播放、暂停、完成等:
_controller.addEventsListener((event) {
if (event.betterPlayerEventType == CustomBetterPlayerEventType.play) {
print("Video started playing");
} else if (event.betterPlayerEventType == CustomBetterPlayerEventType.pause) {
print("Video paused");
} else if (event.betterPlayerEventType == CustomBetterPlayerEventType.finished) {
print("Video finished");
}
});
8. 释放资源
在页面销毁时,记得释放播放器资源:
[@override](/user/override)
void dispose() {
_controller.dispose();
super.dispose();
}