fijkplayer 开源项目教程
项目介绍
fijkplayer 是一个基于 ijkplayer 的 Flutter 媒体播放器插件。它支持 Android 和 iOS 平台,使用 ffmpeg 进行音视频解封装和解码,并添加了硬件加速解码能力。fijkplayer 提供了易用的 API,便于在 Flutter 项目中集成,通过纹理方式将播放器视频画面渲染接入 Flutter 中,性能优于 PlatformView 的接入方法。
项目快速启动
安装依赖
在您的 Flutter 项目的 pubspec.yaml
文件中添加 fijkplayer 依赖:
dependencies:
fijkplayer: ^0.11.0
基本使用
- 导入 fijkplayer 包:
import 'package:fijkplayer/fijkplayer.dart';
- 创建一个 FijkPlayer 实例并播放视频:
class MyVideoPlayer extends StatefulWidget {
@override
_MyVideoPlayerState createState() => _MyVideoPlayerState();
}
class _MyVideoPlayerState extends State<MyVideoPlayer> {
final FijkPlayer player = FijkPlayer();
@override
void initState() {
super.initState();
player.setDataSource("https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_10mb.mp4", autoPlay: true);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("fijkplayer 示例"),
),
body: Center(
child: FijkView(
player: player,
),
),
);
}
@override
void dispose() {
super.dispose();
player.release();
}
}
应用案例和最佳实践
自定义 UI
fijkplayer 允许开发者自定义播放器的 UI。以下是一个简单的自定义 UI 示例:
class CustomVideoPlayer extends StatefulWidget {
@override
_CustomVideoPlayerState createState() => _CustomVideoPlayerState();
}
class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
final FijkPlayer player = FijkPlayer();
@override
void initState() {
super.initState();
player.setDataSource("https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_10mb.mp4", autoPlay: true);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("自定义 UI 示例"),
),
body: Stack(
children: <Widget>[
FijkView(
player: player,
),
Positioned(
bottom: 10,
left: 10,
child: IconButton(
icon: Icon(Icons.play_arrow),
onPressed: () {
player.start();
},
),
),
Positioned(
bottom: 10,
right: 10,
child: IconButton(
icon: Icon(Icons.pause),
onPressed: () {
player.pause();
},
),
),
],
),
);
}
@override
void dispose() {
super.dispose();
player.release();
}
}
典型生态项目
集成到现有 Flutter 应用
fijkplayer 可以轻松集成到现有的 Flutter 应用中,提供高质量的视频播放功能。以下是一个简单的集成示例:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("首页"),
),
body: Center(
child: ElevatedButton(
child: Text("播放视频"),
onPressed: () {