連麥功能
連麥模組(connectMic) 提供連麥功能的整合,詳細使用方式請見下文。
一、設定連麥及連麥資訊
1.1 設定連麥
觀看頁 SDK 預設不會設定連麥功能,如果需要連麥功能,開發者需要手動設定連麥功能,設定完成後即可呼叫連麥模組的 API。
Api 方法: setupConnectMic(pageInstance: ConnectMicPageInstance): Promise<ConnectMicResult>
參數說明:
- pageInstance:頁面或元件實例,
ConnectMicPageInstance類型,必傳
回傳值說明: 設定結果,Promise<ConnectMicResult> 類型
範例:
// 在小程序页面或组件 attached 中设置连麦并传入页面或组件实例
Component({
lifetimes: {
async attached() {
// 设置连麦功能
const result = await watchCore.connectMic.setupConnectMic(this);
if (result.success) {
console.log('设置成功');
} else {
console.log('设置失败', result.failReason);
}
},
},
});
1.2 是否支援連麥功能
用於判斷目前環境是否支援連麥功能。
Api 方法: supportConnectMic(): SupportResult
回傳值說明: SupportResult 類型
範例:
const result = watchCore.connectMic.supportConnectMic();
console.log('是否支持连麦:', result.support ? '支持' : '不支持');
1.3 取得連麥資訊
連麥模組的狀態、資料均透過 connectMicInfo 儲存,開發者可透過 getConnectMicInfo 方法取得連麥資訊。
PS:透過 ConnectMicEvents.ConnectMicInfoChange 事件監聽連麥事件改變。
Api 方法: getConnectMicInfo(): ConnectMicStoreInfo
回傳值說明: 連麥資訊,ConnectMicStoreInfo 類型,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
supportConnectMic |
目前環境是否支援連麥 | boolean |
openMicStatus |
連麥狀態,開啟或關閉 | boolean |
connectMicType |
連麥類型 | ConnectMicType |
connectMicStatus |
使用者連麥狀態 | ConnectMicStatus |
showJoinQueueNumberEnabled |
連麥排序顯示開關 | boolean |
currentMicIndex |
連麥順序索引值(-1 表示不在佇列) | number |
currentIsSpeaker |
目前使用者是否為主講 | boolean |
localIsVideoMuted |
本地流是否關閉攝影機 | boolean |
localIsAudioMuted |
本地流是否關閉麥克風 | boolean |
範例:
const info = watchCore.connectMic.getConnectMicInfo();
console.log('当前是否支持连麦功能', data.supportConnectMic);
console.log('当前是否开启连麦', data.openMicStatus);
1.4 判斷連麥狀態是否處於連麥中
透過 isConnectMicing 判斷使用者或傳入的狀態是否處於連麥中(ConnectMicStatus.Publishing or ConnectMicStatus.Connected)。
Api 方法: isConnectMicing(status?: ConnectMicStatus): boolean
參數說明:
- status:連麥狀態,不傳則用目前狀態,
ConnectMicStatus類型,選傳
回傳值說明: 是否連麥中
範例:
const res = watchCore.connectMic.isConnectMicing();
if (res) {
console.log('用户连麦中');
} else {
console.log('用户没有连麦');
}
二、觀眾上麥
2.1 觀眾申請連麥
當講師/主播開啟連麥功能後,使用者即可申請連麥,開發者可呼叫 applyConnectMic 方法申請連麥,在申請時可呼叫 cancelApplyConnectMic 取消連麥申請。
PS: 透過 ConnectMicEvents.AllowConnectMicApply 監聽連麥申請通過
Api 方法: applyConnectMic(): Promise<ConnectMicResult>
回傳值說明: Promise<ConnectMicResult> 類型
範例:
import { ConnectMicError, ConnectMicEvents } from '@polyv/live-watch-miniprogram-sdk';
// 申请连麦
async function applyConnectMic() {
const result = await watchCore.connectMic.applyConnectMic();
if (result.success) {
toast.success('连麦申请成功!请等待主播同意');
const info = watchCore.connectMic.getConnectMicInfo();
console.log('当前连麦状态:', info.connectMicStatus); // ConnectMicStatus.Applying
return;
}
if (result.failReason === ConnectMicError.GetDevicePermissionFail) {
toast.error('连麦申请失败!未获取设备权限');
}
}
watchCore.connectMic.eventEmitter.on(ConnectMicEvents.AllowConnectMicApply, () => {
toast.success('讲师已通过你的连麦申请');
});
2.2 取消連麥申請
當觀眾申請連麥後,呼叫 cancelApplyConnectMic 即可取消連麥申請。
Api 方法: cancelApplyConnectMic(): void
範例:
watchCore.connectMic.cancelApplyConnectMic();
const info = watchCore.connectMic.getConnectMicInfo();
console.log('当前连麦状态:', info.connectMicStatus); // ConnectMicStatus.NotConnect
2.3 開始推送本地流
講師通過連麥申請後,連麥模組會觸發 ConnectMicEvents.ConnectMicDataChange 事件回呼新的連麥資料列表,此時列表中會存在一個 isLocal 為 true 的連麥物件。
在取得新的列表後建立連麥播放器,並在連麥播放器元件的 attached 生命週期中呼叫 startStream 方法推流,詳細可參考 demo 中的 <connect-mic-player> 元件。
Api 方法: startStream(): void
範例:
Component({
lifetimes: {
attached() {
// 数据为本地流,调用方法推流
if (this.data.isLocal) {
watchCore.connectMic.startStream();
}
}
},
});
2.4 結束連麥
當講師通過觀眾的連麥申請並連麥成功後,透過 endConnectMic 可手動結束觀眾的連麥。
PS:透過 ConnectMicEvents.LeaveConnectMicSuccess 監聽離開成功。
Api 方法: endConnectMic(): Promise<void>
範例:
// 结束连麦
watchCore.connectMic.endConnectMic();
watchCore.connectMic.eventEmitter(ConnectMicEvents.LeaveConnectMicSuccess, () => {
toast.success('结束连麦成功');
const info = watchCore.connectMic.getConnectMicInfo();
console.log('当前连麦状态:', info.connectMicStatus); // ConnectMicStatus.NotConnect
});
三、攝影機設定
3.1 開啟本地攝影機
透過 enabledVideo 方法開啟本地攝影機,可透過 ConnectMicEvents.LocalVideoMuteChange 事件監聽本地攝影機的開關。
Api 方法: enabledVideo(): void
範例:
// 开启本地摄像头
watchCore.connectMic.enabledVideo();
3.2 關閉本地攝影機
透過 disabledVideo 方法關閉本地攝影機,可透過 ConnectMicEvents.LocalVideoMuteChange 事件監聽本地攝影機的開關。
Api 方法: disabledVideo(): void
範例:
// 关闭本地摄像头
watchCore.connectMic.disabledVideo();
3.3 切換前後置攝影機
Api 方法: switchCamera(): void
四、麥克風設定
4.1 開啟本地麥克風
透過 enabledAudio 方法開啟本地麥克風,可透過 ConnectMicEvents.LocalAudioMuteChange 事件監聽本地麥克風的開關。
Api 方法: enabledAudio(): void
範例:
// 开启本地麦克风
watchCore.connectMic.enabledAudio();
4.2 關閉本地麥克風
透過 disabledAudio 方法關閉本地麥克風,可透過 ConnectMicEvents.LocalAudioMuteChange 事件監聽本地麥克風的開關。
Api 方法: disabledAudio(): void
範例:
// 关闭本地麦克风
watchCore.connectMic.disabledAudio();
五、其他
5.1 使用者連麥狀態
Enum 列舉: ConnectMicStatus
| 常數 | 列舉成員 | 說明 |
|---|---|---|
'notConnect' |
ConnectMicStatus.NotConnect |
未連麥 |
'applying' |
ConnectMicStatus.Applying |
連麥申請中 |
'publishing' |
ConnectMicStatus.Publishing |
推流中 |
'connected' |
ConnectMicStatus.Connected |
已連麥 |
'error' |
ConnectMicStatus.Error |
連麥異常 |
5.2 連麥類型
用於區分講師開啟的是視訊連麥或音訊連麥
Enum 列舉: ConnectMicType
| 常數 | 列舉成員 | 說明 |
|---|---|---|
'video' |
ConnectMicType.Video |
視訊連麥 |
'audio' |
ConnectMicType.Audio |
音訊連麥 |
