插件介绍

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_videomedia_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

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐