Flutter鸿蒙跨平台插件:media_kit 使用指南
media_kit是一个适配HarmonyOS的Flutter跨平台媒体播放插件,支持视频/音频播放、硬件加速、播放列表管理等功能。通过Git方式引入依赖,开发者可灵活选择视频或音频模块。该插件提供丰富的API,包括播放控制、音量调节、视频显示等,并支持多种媒体格式。特别优化了在鸿蒙设备上的性能表现,发布模式下运行效果更佳。适用于需要跨平台媒体播放功能的Flutter应用开发。
·
插件介绍
media_kit 是一个功能强大的跨平台视频和音频播放器 Flutter 插件,支持 HarmonyOS 平台。该插件提供了完整的媒体播放解决方案,包括:
- ✅ 视频和音频播放
- ✅ 跨平台支持(Android、iOS、macOS、Windows、Linux、Web、HarmonyOS)
- ✅ 广泛的格式/编解码器支持
- ✅ 硬件/GPU 加速
- ✅ 播放列表支持,支持下一曲/上一曲/跳转/随机播放
- ✅ 音量/播放速度/音调调整
- ✅ 视频/音频/字幕轨道选择
- ✅ 外部音频/字幕轨道加载
- ✅ HTTP 头支持
- ✅ 视频控制
- ✅ 字幕样式自定义
- ✅ 截图功能
该插件为自定义修改版本,已适配 HarmonyOS 平台,确保在鸿蒙设备上稳定运行。
安装与配置
1. 添加依赖
由于该三方库为自定义修改版本,需要以 Git 形式引入。根据应用需求选择以下配置之一:
视频播放应用
dependencies:
media_kit:
git:
url: "https://atomgit.com/"
path: "fluttertpc_media_kit-master/media_kit"
media_kit_video:
git:
url: "https://atomgit.com/"
path: "fluttertpc_media_kit-master/packages/media_kit_video"
media_kit_libs_video:
git:
url: "https://atomgit.com/"
path: "fluttertpc_media_kit-master/libs/universal/media_kit_libs_video"
音频播放应用
dependencies:
media_kit:
git:
url: "https://atomgit.com/"
path: "fluttertpc_media_kit-master/media_kit"
media_kit_libs_audio:
git:
url: "https://atomgit.com/"
path: "fluttertpc_media_kit-master/libs/universal/media_kit_libs_audio"
注意:
- 如果同时需要视频和音频支持,请选择视频库配置
media_kit_libs_video和media_kit_libs_audio包不能混合使用- 发布模式下的性能明显高于调试模式
2. 同步依赖
添加依赖后,运行以下命令同步项目依赖:
flutter pub get
API 使用示例
1. 初始化
在使用插件前,需要确保初始化完成:
import 'package:flutter/material.dart';
import 'package:media_kit/media_kit.dart';
import 'package:media_kit_video/media_kit_video.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
MediaKit.ensureInitialized();
runApp(const MyApp());
}
2. 创建播放器
final Player player = Player();
3. 播放媒体
播放单个媒体文件
final playable = Media('https://example.com/video.mp4');
await player.open(playable);
播放播放列表
final playable = Playlist(
[
Media('https://example.com/video1.mp4'),
Media('https://example.com/video2.mp4'),
Media('https://example.com/video3.mp4'),
],
);
await player.open(playable);
4. 控制播放
// 播放
await player.play();
// 暂停
await player.pause();
// 播放/暂停切换
await player.playOrPause();
// 停止
await player.stop();
// 快进/快退
await player.seek(const Duration(minutes: 6, seconds: 9));
// 设置音量
await player.setVolume(0.5);
// 设置播放速度
await player.setRate(1.5);
// 设置播放模式(单曲循环)
await player.setPlaylistMode(PlaylistMode.single);
5. 显示视频
class VideoPlayerScreen extends StatefulWidget {
const VideoPlayerScreen({Key? key}) : super(key: key);
State<VideoPlayerScreen> createState() => _VideoPlayerScreenState();
}
class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
late final Player player;
late final VideoController controller;
void initState() {
super.initState();
player = Player();
controller = VideoController(player);
player.open(Media('https://example.com/video.mp4'));
}
void dispose() {
player.dispose();
super.dispose();
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('视频播放器')),
body: Center(
child: SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width * 9.0 / 16.0,
child: Video(controller: controller),
),
),
);
}
}
总结
media_kit 插件为 HarmonyOS 平台的 Flutter 应用提供了全面的媒体播放解决方案。通过模块化的设计,开发者可以根据应用需求选择仅包含音频或视频功能,从而减少应用包大小。该插件支持广泛的媒体格式和编解码器,提供了丰富的播放控制功能,包括播放列表管理、音量调整、播放速度控制等。同时,插件还支持硬件加速,确保在鸿蒙设备上实现高性能的媒体播放体验。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
更多推荐


所有评论(0)