功能簡介
RTC SDK通過調用內部方法實現設備檢測和管理。例如,您可以查詢設備信息、檢測攝像頭是否正常工作、檢測音頻設備是否正常錄音及播放、設置攝像頭方向或者切換音頻設備(麥克風和揚聲器)等。
實現方法
以下為常用的設備檢測和管理方法,當獲取設備列表為空時,請確認是否已授予瀏覽器頁面攝像頭和麥克風設備的訪問權限。更多信息,請參見DingRTC。
獲取設備列表
getDevices():枚舉可用的媒體輸入和輸出設備,比如麥克風、攝像頭、耳機等。
getDevices(): Promise<MediaDeviceInfo[]>;
getCameras():枚舉可用的視頻輸入設備,比如攝像頭。
getCameras(): Promise<MediaDeviceInfo[]>;
getMicrophones():枚舉可用的音頻輸入設備,比如麥克風。
getMicrophones(): Promise<MediaDeviceInfo[]>;
getPlaybackDevices():枚舉可用的音頻播放設備,比如揚聲器。
getPlaybackDevices(): Promise<MediaDeviceInfo[]>;
設備插拔事件
當用戶插拔設備時會觸發(fā)插拔事件,可監(jiān)聽下列設備插拔事件來處理指定設備的切換,DeviceInfo的state屬性可以標識設備的插拔狀態(tài),active為插入,inactive為拔出。
"camera-changed": 視頻采集設備狀態(tài)變化
DingRTC.on('camera-changed', (info: DeviceInfo) => { console.log(info); });
"microphone-changed": 音頻采集設備狀態(tài)變化
DingRTC.on('microphone-changed', (info: DeviceInfo) => { console.log(info); });
"playback-device-changed": 音頻播放設備變化
DingRTC.on('playback-device-changed', (info: DeviceInfo) => { console.log(info); });
指定設備采集/播放
接入SDK時,遠端用戶已訂閱音頻軌道可通過setSpeaker修改揚聲器。
修改揚聲器
// 訂閱遠端用戶音頻 const remoteAudioTrack = await client.subscribe(user.userId, 'audio') // 修改指定的設備 await remoteAudioTrack.setSpeaker(newDevieId: string);
說明當前還未支持指定到個人的音頻訂閱,請需要訂閱音頻時將userId 置為字符串'mcu',代表訂閱的是頻道內遠端用戶合流后的音頻。指定到個人的音頻訂閱將在近期支持。
本地音視頻軌道可在創(chuàng)建音視頻軌道時通過指定deviceId來采集對應設備的音視頻數據,也可以在創(chuàng)建音視頻軌道后通過調用setDevice來修改指定采集設備。
指定攝像頭
// 創(chuàng)建攝像頭軌道 const cameraTrack = await createCameraVideoTrack({ ..., deviceId: '****', }); // 修改指定的設備, 針對移動端newDevieId也可設置為user/environment await cameraTrack.setDevice(newDevieId: string);
指定麥克風
// 創(chuàng)建麥克風軌道 const micTrack = await createMicrophoneAudioTrack({ ..., deviceId: '****', }); // 修改指定的設備 await micTrack.setDevice(newDevieId: string);