deviceManager-采集设备管理
deviceManager 是一个用来管理本地媒体设备的对象,一般用来捕获本地的媒体流
成员
name | 类型 | 介绍 |
---|---|---|
deviceInfo | MediaDeviceInfo[] | 房间当前的设备列表 |
audioDevice | MediaDeviceInfo | 当前使用的音频设备, @default 代表使用系统默认设备 |
videoDevice | MediaDeviceInfo | 当前使用的视频设备, @default 代表使用系统默认设备 |
getLocalStream 获取本地媒体流 (异步)
获取本地的媒体数据
参数 | 类型 | 备注 |
---|---|---|
recordConfig |
| 带 ? 的为可选项 enabled 代表是否开启视频/音频轨道 bitrate 代表码率(kb/s),默认音频 64, 视频 512 frameRate 代表视频帧率 width/height 代表视频分辨率 screen 字段代表开启屏幕录制 |
返回 | 类型 | 备注 |
---|---|---|
stream | Stream | 本地的 stream 对象 |
如果不传入参数则使用默认参数:开启音视频、视频分辨率 640*480、码率 600 kbps。
screen
字段代表开启屏幕共享,不能和 video
字段同时打开,关于屏幕共享功能详细见 屏幕分享使用说明
audio
字段中 buffer
开启代表开启外部音频输入,关于此功能详细见 外部音频输入使用说明
try {
const localStream = await QNRTC.deviceManager.getLocalStream({
audio: { enabled: true },
video: { enabled: true, bitrate: 1024, frameRate: 30 },
});
} catch (e) {
console.log('getLocalStream Error!', e);
}
// or use promise
QNRTC.deviceManager.getLocalStream({
audio: { enabled: true },
video: { enabled: true, bitrate: 1024, frameRate: 30 },
}).then(localStream => {
...
}).catch(e => {
console.log('getLocalStream Error!', e);
})
采集的分辨率支持范围配置 (1.2.0 版本以上)
const stream = await deviceManager.getLocalStream({
video: {
enabled: true,
// width 希望能取到1280
// 如果不能就在 600-1500的范围内选择一个摄像头支持的值,还是不能就抛出错误
width: { min: 600, max: 1500, ideal: 1280 },
// height 希望能取到720,如果失败就抛出错误
height: { exact: 720 },
}
})
setVolume 设置采集音量 (同步)
参数 | 类型 | 备注 |
---|---|---|
value | number | 基于当前音量的增益数值,1 不改变,0 静音 |
Safari 暂时不支持该方法
QNRTC.deviceManager.setVolume(10);
Event: device-update 检测到设备列表更新 (事件)
QNRTC.deviceManager.on("device-update", () => {
console.log("current devices", QNRTC.deviceManager.deviceInfo);
});
changeDevice 切换采集设备 (同步)
参数 | 类型 | 备注 |
---|---|---|
type | string | "audio" 或者 "video" |
deviceId | string | 设备 id |
使用指定的 deviceId 采集, 可以在发布中途调用
如果在发布中途调用, safari 11+/chrome 65+ 会进行流的热替换
其余版本会用新的流自动重新发布一次
QNRTC.deviceManager.changeDevice("video", "your device id");