功能简介
RTC SDK通过调用内部方法实现设备检测和管理。例如,您可以查询设备信息、检测摄像头是否正常工作、检测音频设备是否正常录音及播放、设置摄像头方向或者切换音频设备(麦克风和扬声器)等。
实现方法
以下为常用的设备检测和管理方法,当获取设备列表为空时,请确认是否已授予浏览器页面摄像头和麦克风设备的访问权限。更多信息,请参见DingRTC。
获取设备列表
getDevices():枚举可用的媒体输入和输出设备,比如麦克风、摄像头、耳机等。
getDevices(): Promise<MediaDeviceInfo[]>;
getCameras():枚举可用的视频输入设备,比如摄像头。
getCameras(): Promise<MediaDeviceInfo[]>;
getMicrophones():枚举可用的音频输入设备,比如麦克风。
getMicrophones(): Promise<MediaDeviceInfo[]>;
getPlaybackDevices():枚举可用的音频播放设备,比如扬声器。
getPlaybackDevices(): Promise<MediaDeviceInfo[]>;
设备插拔事件
当用户插拔设备时会触发插拔事件,可监听下列设备插拔事件来处理指定设备的切换,DeviceInfo的state属性可以标识设备的插拔状态,active为插入,inactive为拔出。
"camera-changed": 视频采集设备状态变化
DingRTC.on('camera-changed', (info: DeviceInfo) => { console.log(info); });
"microphone-changed": 音频采集设备状态变化
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',代表订阅的是频道内远端用户合流后的音频。指定到个人的音频订阅将在近期支持。
本地音视频轨道可在创建音视频轨道时通过指定deviceId来采集对应设备的音视频数据,也可以在创建音视频轨道后通过调用setDevice来修改指定采集设备。
指定摄像头
// 创建摄像头轨道 const cameraTrack = await createCameraVideoTrack({ ..., deviceId: '****', }); // 修改指定的设备, 针对移动端newDevieId也可设置为user/environment await cameraTrack.setDevice(newDevieId: string);
指定麦克风
// 创建麦克风轨道 const micTrack = await createMicrophoneAudioTrack({ ..., deviceId: '****', }); // 修改指定的设备 await micTrack.setDevice(newDevieId: string);
文档内容是否对您有帮助?