1. 插件介绍

fluttertpc_livekit_client 是一个专为鸿蒙系统适配的 Flutter 实时音视频通信插件,基于官方的 livekit_client 开发。该插件提供了丰富的实时音视频通信功能,支持房间管理、音视频轨道发布与订阅、端到端加密、媒体设备管理等核心能力,可用于构建高质量的实时音视频应用,如视频会议、直播、在线教育等场景。

核心功能特性

  • 房间管理:支持房间连接、断开、设备选择等功能
  • 音视频轨道:支持音频和视频轨道的创建、发布、订阅和控制
  • 端到端加密:提供安全的端到端加密功能,保护通信内容
  • 媒体设备管理:支持音频输入/输出设备、视频输入设备的选择和控制
  • 实时状态监控:支持连接质量、媒体流状态等实时监控
  • 跨平台兼容:在鸿蒙系统上实现了与 iOS/Android 平台一致的功能体验

2. 如何使用插件

2.1 包的引入

由于这是一个专为鸿蒙系统适配的自定义修改版本,需要通过 Git 形式引入依赖。在项目的 pubspec.yaml 文件中添加以下配置:

dependencies:
  livekit_client:
    git:
      url: "https://gitcode.com/openharmony-sig/fluttertpc_livekit_client.git"

添加依赖后,执行以下命令获取包:

flutter pub get

2.2 基本 API 调用示例

2.2.1 房间连接与管理
import 'package:livekit_client/livekit_client.dart';

// 创建房间实例
final room = Room();

// 设置连接选项
final connectOptions = ConnectOptions(
  autoSubscribe: true,
);

final roomOptions = RoomOptions(
  adaptiveStream: true,
  dynacast: true,
);

// 连接到房间
await room.connect(
  'wss://your-livekit-server-url',
  'your-token',
  connectOptions: connectOptions,
  roomOptions: roomOptions,
);

// 断开连接
await room.disconnect();

// 设置音频输出设备
final audioOutputs = await Hardware.instance.audioOutputs;
if (audioOutputs.isNotEmpty) {
  await room.setAudioOutputDevice(audioOutputs.first);
}

// 设置扬声器模式
await room.setSpeakerOn(true);
2.2.2 音视频轨道发布
// 创建音频轨道
final localAudioTrack = await LocalAudioTrack.create();

// 发布音频轨道
await room.localParticipant.publishAudioTrack(localAudioTrack);

// 创建视频轨道
final localVideoTrack = await LocalVideoTrack.createCameraTrack(
  const CameraCaptureOptions(
    position: CameraPosition.front,
  ),
);

// 发布视频轨道
await room.localParticipant.publishVideoTrack(localVideoTrack);

// 切换摄像头
await localVideoTrack.switchCamera('camera-device-id');

// 静音/取消静音麦克风
await localAudioTrack.mute();
await localAudioTrack.unmute();

// 停止视频轨道
await localVideoTrack.stop();
2.2.3 音视频轨道订阅
// 监听远程参与者加入事件
room.on<RemoteParticipantJoinedEvent>((event) {
  final participant = event.participant;
  print('Remote participant joined: ${participant.identity}');

  // 订阅所有音视频轨道
  for (final publication in participant.trackPublications.values) {
    if (publication.kind == TrackType.audio ||
        publication.kind == TrackType.video) {
      publication.subscribe();
    }
  }
});

// 监听轨道订阅事件
room.on<TrackSubscribedEvent>((event) {
  final track = event.track;
  final publication = event.publication;

  if (track is RemoteVideoTrack) {
    // 渲染视频轨道
    // 使用 VideoTrackRenderer widget
  } else if (track is RemoteAudioTrack) {
    // 音频轨道会自动播放
  }
});

// 监听轨道取消订阅事件
room.on<TrackUnsubscribedEvent>((event) {
  // 清理资源
});
2.2.4 端到端加密 (E2EE)
// 创建密钥提供者
final keyProvider = BaseKeyProvider();

// 设置共享密钥
await keyProvider.setSharedKey('your-encryption-key', 0);

// 配置 E2EE 选项
final e2eeOptions = E2EEOptions(
  keyProvider: keyProvider,
  encryptionType: EncryptionType.kGcm,
);

// 连接到房间时启用 E2EE
final roomOptions = RoomOptions(
  e2eeOptions: e2eeOptions,
);

await room.connect(
  'wss://your-livekit-server-url',
  'your-token',
  roomOptions: roomOptions,
);

// 启用/禁用 E2EE
await room.setE2EEEnabled(true);
await room.setE2EEEnabled(false);

// 监听 E2EE 状态变化
room.on<TrackE2EEStateEvent>((event) {
  print('E2EE state changed: ${event.state}');
});
2.2.5 媒体设备管理
// 获取所有音频输入设备
final audioInputs = await Hardware.instance.audioInputs;

// 获取所有音频输出设备
final audioOutputs = await Hardware.instance.audioOutputs;

// 获取所有视频输入设备
final videoInputs = await Hardware.instance.videoInputs;

// 选择音频输入设备
if (audioInputs.isNotEmpty) {
  await Hardware.instance.selectAudioInput(audioInputs.first);
}

// 选择音频输出设备
if (audioOutputs.isNotEmpty) {
  await Hardware.instance.selectAudioOutput(audioOutputs.first);
}

// 切换扬声器模式
await Hardware.instance.setSpeakerphoneOn(true);

3. 约束与限制

3.1 兼容性

该插件在以下环境中已测试通过:

  • Flutter: 3.7.12-ohos-1.0.6 / 3.22.1-ohos-1.0.1
  • SDK: 5.0.0(12)
  • IDE: DevEco Studio: 5.0.13.200
  • ROM: 5.1.0.120 SP3

3.2 功能支持

大部分核心功能在鸿蒙平台上均已支持,包括:

  • 房间连接与断开
  • 音视频轨道发布与订阅
  • 端到端加密
  • 媒体设备管理
  • 实时状态监控

详细的 API 支持情况可参考项目文档中的 API 表格。

4. 总结

fluttertpc_livekit_client 是一个功能强大的实时音视频通信插件,专为鸿蒙系统进行了适配。通过该插件,开发者可以轻松构建高质量的实时音视频应用,实现房间管理、音视频发布订阅、端到端加密等核心功能。

该插件提供了与 iOS/Android 平台一致的 API 接口和功能体验,同时针对鸿蒙系统进行了优化和适配,确保了在鸿蒙设备上的稳定运行和良好性能。

5. 社区支持

如果您在使用过程中遇到问题或有任何建议,欢迎加入开源鸿蒙跨平台社区进行交流和讨论:

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

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

更多推荐