Flutter livekit_client 包在鸿蒙上的使用指南
fluttertpc_livekit_client是专为鸿蒙系统适配的Flutter实时音视频通信插件,基于官方livekit_client开发。该插件提供房间管理、音视频轨道发布/订阅、端到端加密、设备管理等核心功能,适用于视频会议、直播等场景。通过Git方式引入依赖后,开发者可便捷实现房间连接、音视频轨道控制、E2EE加密等功能。插件已在Flutter 3.7.12/3.22.1等环境测试通过
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
更多推荐


所有评论(0)