功能简介

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);