Flutter音频播放插件goat_player的使用
Flutter音频播放插件goat_player的使用
goat_player
是一个基于 video_player
和 Chewie
的高级视频播放器插件。它解决了许多常见的问题,并且配置简单。由于 Better Player
的原作者不再维护该项目,goat_player
是对 Better Player
的改进版本,包含了许多修复和更新。
变更记录
Goat 最伟大的时刻
- 修复:
- 迁移到 AndroidX Media3
- 依赖项更新 jhomlala/betterplayer#1291
- 将 Gradle Wrapper 版本更改为 v7.5
- 将 Gradle 构建工具版本更改为 v7.4.2
- 将 Kotlin 插件版本更改为 v1.8.10
- 重构并替换废弃 API
- 修复 iOS 问题
- 功能:
- 添加了波斯语语言支持 jhomlala/betterplayer#1250
Goat Player
这是一个基于 video_player
和 Chewie
的高级视频播放器,解决了很多典型的使用场景,并且易于运行。
介绍
该插件基于 Chewie。Chewie 是一个很棒的插件,在很多情况下表现良好。Better Player 是对 Chewie 中引入的想法的延续。Better Player 修复了常见错误,增加了更多配置选项,并解决了典型用例。
功能:
- 修复常见错误
- 增加高级配置选项
- 重构播放器控件
- 支持播放列表
- 支持在
ListView
中播放视频 - 支持字幕:格式包括 SRT、WEBVTT(支持 HTML 标签);来自 HLS 的字幕;视频的多个字幕
- 支持 HTTP Header
- 支持视频的 BoxFit
- 支持播放速度
- 支持 HLS(轨道、字幕(也支持分段)、音频轨道选择)
- 支持 DASH(轨道、字幕、音频轨道选择)
- 支持替代分辨率
- 支持缓存
- 支持通知
- 支持画中画
- 支持 DRM(令牌、Widevine、FairPlay EZDRM)
文档
重要信息
该插件仍在开发中,每个版本可能会遇到破坏性更改。该插件是免费的兼职开发项目。如果你需要其他在 pub.dev
上可用的播放器支持的功能,请随时创建 PR。所有有价值的贡献都欢迎!
使用示例
以下是一个完整的示例代码,展示如何在 Flutter 应用中使用 goat_player
插件:
import 'package:flutter/material.dart';
import 'package:goat_video_player/goat_video_player.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: VideoPlayerScreen(),
);
}
}
class VideoPlayerScreen extends StatefulWidget {
[@override](/user/override)
_VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}
class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
GoatVideoPlayerController _controller;
[@override](/user/override)
void initState() {
super.initState();
// 初始化控制器
_controller = GoatVideoPlayerController.network(
'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4',
)..initialize().then((_) {
setState(() {});
});
}
[@override](/user/override)
void dispose() {
super.dispose();
// 释放资源
_controller.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Goat Player 示例'),
),
body: Center(
child: _controller.value.isInitialized
? GoatVideoPlayer(_controller)
: CircularProgressIndicator(),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// 播放或暂停视频
if (_controller.value.isPlaying) {
_controller.pause();
} else {
_controller.play();
}
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
);
}
}
更多关于Flutter音频播放插件goat_player的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter音频播放插件goat_player的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
goat_player
是一个用于 Flutter 的音频播放插件,它提供了简单易用的 API 来播放音频文件。以下是如何在 Flutter 项目中使用 goat_player
的基本步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 goat_player
插件的依赖。
dependencies:
flutter:
sdk: flutter
goat_player: ^0.1.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 goat_player
插件。
import 'package:goat_player/goat_player.dart';
3. 初始化播放器
在使用播放器之前,你需要初始化它。通常你可以在 initState
方法中进行初始化。
class AudioPlayerScreen extends StatefulWidget {
@override
_AudioPlayerScreenState createState() => _AudioPlayerScreenState();
}
class _AudioPlayerScreenState extends State<AudioPlayerScreen> {
GoatPlayer _player;
@override
void initState() {
super.initState();
_player = GoatPlayer();
}
@override
void dispose() {
_player.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Audio Player'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
await _player.play('https://www.example.com/audio.mp3');
},
child: Text('Play Audio'),
),
ElevatedButton(
onPressed: () async {
await _player.pause();
},
child: Text('Pause Audio'),
),
ElevatedButton(
onPressed: () async {
await _player.stop();
},
child: Text('Stop Audio'),
),
],
),
),
);
}
}
4. 播放音频
你可以使用 play
方法来播放音频文件。你可以传递一个本地文件路径或一个网络 URL。
await _player.play('https://www.example.com/audio.mp3');
5. 暂停和停止音频
你可以使用 pause
和 stop
方法来暂停和停止音频播放。
await _player.pause();
await _player.stop();
6. 释放资源
在不再需要播放器时,记得调用 dispose
方法来释放资源。
@override
void dispose() {
_player.dispose();
super.dispose();
}
7. 处理播放状态
你可以监听播放器的状态变化,例如播放、暂停、停止等。
_player.onPlayerStateChanged.listen((state) {
print('Player state: $state');
});
8. 处理错误
你可以监听播放器的错误事件。
_player.onPlayerError.listen((error) {
print('Player error: $error');
});
9. 控制音量
你可以使用 setVolume
方法来控制音量。
await _player.setVolume(0.5); // 设置音量为 50%
10. 控制播放位置
你可以使用 seek
方法来跳转到指定的播放位置。
await _player.seek(Duration(seconds: 30)); // 跳转到 30 秒
11. 获取播放进度
你可以使用 positionStream
来获取当前的播放位置。
_player.positionStream.listen((position) {
print('Current position: $position');
});
12. 获取音频时长
你可以使用 durationStream
来获取音频的总时长。
_player.durationStream.listen((duration) {
print('Total duration: $duration');
});