Last updated:
0 purchases
rongcloud rtc wrapper plugin
融云 RTC Wrapper Plugin #
本文档主要讲解了如何使用融云 RTC Wrapper Plugin,基于 融云 iOS/Android 平台的 RTCLib SDK
Flutter 官网
融云 iOS RTC 文档
融云 Android RTC 文档
前期准备 #
1 申请开发者账号 #
融云官网申请开发者账号
通过管理后台的 "基本信息"->"App Key" 获取 AppKey
通过管理后台的 "IM 服务"—>"API 调用"->"用户服务"->"获取 Token",通过用户 id 获取 IMToken
2 开通音视频服务 #
管理后台的 "音视频服务"->"服务设置" 开通音视频 RTC 3.0 ,开通两个小时后生效
依赖 RTC Wrapper Plugin #
在项目的 pubspec.yaml 中写如下依赖
dependencies:
flutter:
sdk: flutter
rongcloud_rtc_wrapper_plugin: 5.6.11
copied to clipboard
iOS 需要在 Info.plist 中需要加入对相机和麦克风的权限申请
<key>NSCameraUsageDescription</key>
<string>使用相机</string>
<key>NSMicrophoneUsageDescription</key>
<string>使用麦克风</string>
copied to clipboard
还需要添加字段 io.flutter.embedded_views_preview 值为 YES
Android 需要在 AndroidManifest.xml 文件中声明对相机和麦克风的权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
copied to clipboard
前置接口说明 #
初始化 IM SDK #
RongIMClient.init(RongAppKey);
copied to clipboard
连接 IM #
RongIMClient.connect(IMToken, (code, userId) {
});
copied to clipboard
创建 RTC 引擎 #
engine = await RCRTCEngine.create();
copied to clipboard
音视频模式接口说明 #
用户加入房间,渲染并发布资源 #
加入 RTC 房间 #
// 设置加入 RTC 房间事件监听
engine.onRoomJoined = (int code, String? message) {
};
// 加入 RTC 房间
RCRTCRoomSetup setup = RCRTCRoomSetup.create(
type: RCRTCMediaType.audio_video,
role: RCRTCRole.meeting_member,
);
engine.joinRoom(id, setup);
copied to clipboard
采集音频 #
引擎默认开启音频采集
engine.enableMicrophone(true);
copied to clipboard
采集视频 #
engine.enableCamera(true);
copied to clipboard
渲染视频 #
RCRTCView view = await RCRTCView.create();
engine.setLocalView(view);
copied to clipboard
发布资源 #
engine.publish(RCRTCMediaType.audio_video);
copied to clipboard
渲染远端用户 #
监听远端用户加入的回调 #
当用户加入的时候,不要做订阅渲染的处理,因为此时该用户可能刚加入房间成功,但是尚未发布资源
engine.onUserJoined = (roomId, userId) {
};
copied to clipboard
监听远端用户发布资源的回调 #
engine.onRemotePublished = (roomId, userId, type) {
};
copied to clipboard
远端用户发布资源后,订阅远端用户资源 #
engine.subscribe(userId, type);
copied to clipboard
渲染远端用户资源 #
RCRTCView view = await RCRTCView.create();
engine.setRemoteView(userId, view);
copied to clipboard
直播模式接口说明 #
主播加入房间,渲染并发布资源 #
加入 RTC 房间 #
// 设置加入 RTC 房间事件监听
engine.onRoomJoined = (int code, String? message) {
};
// 加入 RTC 房间
RCRTCRoomSetup setup = RCRTCRoomSetup.create(
type: RCRTCMediaType.audio_video,
role: RCRTCRole.live_broadcaster,
);
engine.joinRoom(id, setup);
copied to clipboard
采集音频 #
引擎默认开启音频采集
engine.enableMicrophone(true);
copied to clipboard
采集视频 #
engine.enableCamera(true);
copied to clipboard
渲染视频 #
RCRTCView view = await RCRTCView.create();
engine.setLocalView(view);
copied to clipboard
发布资源 #
engine.publish(RCRTCMediaType.audio_video);
copied to clipboard
渲染远端主播 #
监听远端主播加入的回调 #
当主播加入的时候,不要做订阅渲染的处理,因为此时该主播可能刚加入房间成功,但是尚未发布资源
engine.onUserJoined = (roomId, userId) {
};
copied to clipboard
监听远端主播发布资源的回调 #
engine.onRemotePublished = (roomId, userId, type) {
};
copied to clipboard
远端主播发布资源后,订阅远端主播资源 #
engine.subscribe(userId, type);
copied to clipboard
渲染远端主播资源 #
RCRTCView view = await RCRTCView.create();
engine.setRemoteView(userId, view);
copied to clipboard
观众加入房间,订阅并渲染MCU资源 #
加入 RTC 房间 #
// 设置加入 RTC 房间事件监听
engine.onRoomJoined = (int code, String? message) {
};
// 加入 RTC 房间
RCRTCRoomSetup setup = RCRTCRoomSetup.create(
type: RCRTCMediaType.audio_video,
role: RCRTCRole.live_audience,
);
engine.joinRoom(id, setup);
copied to clipboard
监听MCU资源发布回调 #
engine.onRemoteLiveMixPublished = (type) {
};
copied to clipboard
MCU资源发布后,订阅MCU资源 #
engine.subscribeLiveMix(type);
copied to clipboard
渲染MCU资源 #
RCRTCView view = await RCRTCView.create();
engine.setLiveMixView(view);
copied to clipboard
观众加入房间,订阅并渲染主播资源 #
加入 RTC 房间 #
// 设置加入 RTC 房间事件监听
engine.onRoomJoined = (int code, String? message) {
};
// 加入 RTC 房间
RCRTCRoomSetup setup = RCRTCRoomSetup.create(
type: RCRTCMediaType.audio_video,
role: RCRTCRole.live_audience,
);
engine.joinRoom(id, setup);
copied to clipboard
监听远端主播加入的回调 #
当主播加入的时候,不要做订阅渲染的处理,因为此时该主播可能刚加入房间成功,但是尚未发布资源
engine.onUserJoined = (roomId, userId) {
};
copied to clipboard
监听远端主播发布资源的回调 #
engine.onRemotePublished = (roomId, userId, type) {
};
copied to clipboard
远端主播发布资源后,订阅远端主播资源 #
engine.subscribe(userId, type);
copied to clipboard
渲染远端主播资源 #
RCRTCView view = await RCRTCView.create();
engine.setRemoteView(userId, view);
copied to clipboard
其他接口 #
离开房间 #
engine.leaveRoom();
copied to clipboard
销毁引擎 #
engine.destroy();
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.