连麦用户列表
本文档主要讲述连麦用户列表及节点 ConnectMicItem 的 Api 说明。
一、连麦列表
1.1 获取连麦列表
观众观看连麦用户流方式:
- 当观众未连麦时,以混流的方式观看;
- 当观众连麦后,以 RTC 流观看;
当观众上麦或连麦用户流加入后触发 ConnectMicEvents.ConnectMicListChange 事件,开发者通过事件的 connectMicList 或 getConnectMicList 方法获取连麦用户列表。
Api 方法: getConnectMicList(): ConnectMicItem[]
返回值说明: ConnectMicItem[] 类型
示例:
watchCore.connectMic.eventEmitter.on(ConnectMicEvents.ConnectMicListChange, () => {
const connectMicList = watchCore.connectMic.getConnectMicList();
console.log('连麦用户列表', connectMicList);
});
二、连麦用户节点
2.1 ConnectMicItem 属性
| 属性名 | 说明 | 类型 |
|---|---|---|
streamId |
用户流 id | string |
isLocal |
是否本地推流 | boolean |
isSelf |
是否为当前用户 | boolean |
isMaster |
是否为第一画面 | boolean |
isTeacher |
是否讲师 | boolean |
nickname |
用户昵称 | string |
pic |
用户头像 | string |
userType |
用户身份 | ChatUserType |
isAudioMuted |
是否关闭麦克风 | boolean |
currentVolume |
当前音量(0 ~ 1) | number |
isVideoMuted |
是否关闭摄像头 | boolean |
mirrorEnabled |
是否开启镜像(仅本地流有效) | boolean |
currentConnectMicType |
该用户的连麦方式 | ConnectMicType |
isPlayFail |
是否自动播放失败 | boolean |
isAudience |
是否观众模式,仅拉主讲流 | boolean |
示例:
// 获取连麦用户列表
const connectMicList = watchCore.connectMic.getConnectMicList();
connectMicList.forEach((micItem) => {
console.log('连麦用户流 id', micItem.streamId);
console.log('该用户是否关闭摄像头', micItem.isVideoMuted);
console.log('该用户是否关闭麦克风', micItem.isAudioMuted);
});
2.2 推送本地流
当主讲同意观众的连麦申请后,连麦状态会变为推送中 ConnectMicStatus.Applying,连麦模块会回调 ConnectMicEvents.ConnectMicListChange 连麦用户列表改变事件,开发者通过连麦用户节点的 publishStream 方法推送本地流。
推流成功后将触发 ConnectMicEvents.PublishStreamSuccess 事件。
Api 方法: publishStream(options: PublishStreamOptions): void
参数说明:
- options:推流参数,
PublishStreamOptions类型,必传,详细类型说明如下
| 参数名 | 说明 | 类型 | 必须 | 默认值 |
|---|---|---|---|---|
element |
渲染节点 | HTMLDivElement |
是 | - |
control |
控制栏 | boolean |
否 | true |
fit |
视频裁剪模式 | ConnectMicFitType |
否 | ConnectMicFitType.Cover |
profile |
推流属性 | StreamProfile |
否 | '240p' |
示例:
watchCore.connectMic.eventEmitter.on(ConnectMicEvents.ConnectMicListChange, ({ connectMicList }) => {
// 遍历连麦用户列表
connectMicList.forEach((micItem) => {
// 本地流节点
if (micItem.isLocal) {
// 推送本地流
micItem.publishStream({
element: 'NodeElement',
});
}
});
});
2.3 订阅连麦用户流
当观众上麦或下麦后,连麦模块会回调 ConnectMicEvents.ConnectMicListChange 连麦用户列表改变事件,开发者可监听连麦用户列表改变事件获取新的连麦用户列表,通过连麦用户节点的 subscribeStream 方法订阅连麦用户流。
Api 方法: subscribeStream(options: SubscribeSteamOptions): void
参数说明:
- options:订阅流参数,
SubscribeSteamOptions类型,必传,详细类型说明如下
| 参数名 | 说明 | 类型 | 必须 | 默认值 |
|---|---|---|---|---|
element |
渲染节点 | HTMLDivElement |
是 | - |
control |
控制栏 | boolean |
否 | true |
fit |
视频裁剪模式 | ConnectMicFitType |
否 | ConnectMicFitType.Cover |
video |
拉取视频流 | boolean |
否 | true |
audio |
拉取音频流 | boolean |
否 | true |
示例:
watchCore.connectMic.eventEmitter.on(ConnectMicEvents.ConnectMicListChange, ({ connectMicList }) => {
// 遍历连麦用户列表
connectMicList.forEach((micItem) => {
if (micItem.isLocal) {
// 推送本地流
micItem.publishStream({
element: 'NodeElement',
});
} else {
// 订阅连麦流
micItem.subscribeStream({
element: 'NodeElement',
});
}
});
});
2.4 恢复连麦流播放
自动播放失败后,用户节点 isPlayFail 会更改为 true,此时需要显示播放按钮,用户点击播放按钮后可调用该方法恢复流播放。
Api 方法: resumeStream(): void
示例:
if (micItem.isPlayFail) {
console.log('显示节点的播放按钮');
}
document.querySelector('播放按钮选择器').addEventListener('click', () => {
// 恢复播放
micItem.resumeStream();
});
2.5 移除连麦用户流
当连麦节点销毁时,需要调用 removeStream 方法移除用户流,以 vue 组件销毁为例:
Api 方法: removeStream(): void
示例:
export default {
beforeDestroy() {
this.micItem.removeStream();
}
};
三、其他
3.1 推流属性
profile 推流属性可选值及对应的配置参数:
| 推流属性 | 分辨率 | 桢率 | 码率 |
|---|---|---|---|
240p |
320 × 240 | 20 | 200 |
240p_1 |
320 × 240 | 15 | 200 |
240p_4 |
424 × 240 | 15 | 220 |
480p |
640 × 480 | 15 | 500 |
480p_1 |
640 × 480 | 15 | 500 |
480p_8 |
848 × 480 | 15 | 610 |
720p |
1280 × 720 | 15 | 1130 |
720p_1 |
1280 × 720 | 15 | 1130 |
720p_2 |
1280 × 720 | 30 | 2000 |
720p_5 |
960 × 720 | 15 | 910 |
1080p_1 |
1920 × 1080 | 15 | 1500 |
1080p_2 |
1920 × 1080 | 25 | 1500 |
