保利威文档中心

幫助中心

連麥功能

更新時間:2024-10-10 17:27:10

連麥模組(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 音訊連麥
联系客服,在线咨询