Flutter视频播放器插件river_player_ff的使用
Flutter视频播放器插件river_player_ff的使用
变更记录
修复:
- 迁移到AndroidX Media3
- 更新依赖项 jhomlala/betterplayer#1291
- 将Gradle Wrapper版本更改为v7.5
- 将Gradle构建工具版本更改为v7.4.2
- 将Kotlin插件版本更改为v1.8.10
- 重构和废弃API替换
功能:
- 添加波斯语语言支持 jhomlala/betterplayer#1250
River Player
River Player
是基于 video_player
和 Chewie
的高级视频播放器。它解决了许多常见的用例,并且易于运行。
截图
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
简介
该插件基于 Chewie
。Chewie 是一个很棒的插件,在很多情况下都能很好地工作。Better Player 继承了 Chewie 中引入的想法,并修复了常见的错误,增加了更多的配置选项并解决了典型用例。
功能:
- 修复常见错误
- 增加高级配置选项
- 重构播放器控件
- 支持播放列表
- 支持在
ListView
中播放视频 - 支持字幕(格式:SRT,WEBVTT,带有HTML标签支持;来自HLS的字幕;视频的多个字幕)
- 支持HTTP头
- 支持视频填充模式
- 支持播放速度
- 支持HLS(轨道,字幕(分段),音频轨道选择)
- 支持DASH(轨道,字幕,音频轨道选择)
- 支持替代分辨率
- 支持缓存
- 支持通知
- 支持画中画
- 支持DRM(令牌,Widevine,FairPlay EZDRM)。
- 更多功能…
文档
重要信息
该插件正在开发中。每个版本都可能会有破坏性变更。该插件是部分时间免费开发的。如果您需要其他在pub dev上可用的播放器支持的功能,请随时创建PR。所有有价值的贡献都是受欢迎的!
示例代码
import 'package: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(),
),
);
}
}
更多关于Flutter视频播放器插件river_player_ff的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter视频播放器插件river_player_ff的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,关于Flutter视频播放器插件 river_player_ff
的使用,下面是一个简单的代码示例,展示了如何在Flutter应用中集成和使用这个插件。
首先,确保你已经在 pubspec.yaml
文件中添加了 river_player_ff
依赖:
dependencies:
flutter:
sdk: flutter
river_player_ff: ^最新版本号 # 请替换为实际的最新版本号
然后,运行 flutter pub get
来获取依赖。
接下来,在你的 Dart 文件中,你可以按照以下步骤来使用 river_player_ff
插件:
import 'package:flutter/material.dart';
import 'package:river_player_ff/river_player_ff.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Video Player Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: VideoPlayerScreen(),
);
}
}
class VideoPlayerScreen extends StatefulWidget {
@override
_VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}
class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
late RiverPlayerController _controller;
@override
void initState() {
super.initState();
// 初始化控制器并设置视频URL
_controller = RiverPlayerController()
..setDataSource('https://www.example.com/your-video-file.mp4') // 替换为你的视频URL
..initialize();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('River Player FF Demo'),
),
body: Center(
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: RiverPlayerView(_controller),
)
: Container(
child: CircularProgressIndicator(),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// 控制播放/暂停
setState(() {
if (_controller.value.isPlaying) {
_controller.pause();
} else {
_controller.play();
}
});
},
tooltip: 'Play/Pause',
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
);
}
}
代码解释:
-
依赖导入:
- 导入
flutter/material.dart
用于构建UI。 - 导入
river_player_ff/river_player_ff.dart
用于视频播放器功能。
- 导入
-
主应用:
MyApp
是应用的根组件,定义了应用的主题和主页。
-
视频播放器页面:
VideoPlayerScreen
是一个有状态的组件,用于管理视频播放器的状态。- 在
initState
方法中,初始化RiverPlayerController
并设置视频源URL。 - 在
dispose
方法中,释放控制器资源。
-
UI构建:
- 使用
AspectRatio
保持视频的宽高比。 - 在视频未初始化时显示一个加载指示器。
- 使用
FloatingActionButton
控制视频的播放和暂停,并根据当前播放状态更新按钮图标。
- 使用
请确保将 'https://www.example.com/your-video-file.mp4'
替换为有效的视频URL。
这个示例展示了基本的视频播放器功能,你可以根据需要进一步扩展,比如添加全屏功能、音量控制、进度条等。