連麥用戶列表
本文檔主要講述連麥用戶列表及節點 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 |
