@tencentcloud/roomkit-web-vue3
Version:
<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,
49 lines (48 loc) • 2.07 kB
JavaScript
import { TUIMediaDeviceType, TUIMediaDeviceState } from "@tencentcloud/tuiroom-engine-js";
import logger from "../../../utils/common/logger/index.mjs";
import useVideoDeviceManagerState, { isCameraListInitiated } from "./videoDeviceManagerState.mjs";
import useDeviceManager from "../../../hooks/useDeviceManager.mjs";
const deviceManager = useDeviceManager();
const { cameraList, currentCameraDevice } = useVideoDeviceManagerState();
async function initMediaDeviceList() {
var _a, _b;
if (!deviceManager.instance) {
return;
}
cameraList.value = await ((_a = deviceManager.instance) == null ? void 0 : _a.getDevicesList({
type: TUIMediaDeviceType.kMediaDeviceTypeVideoCamera
}));
isCameraListInitiated.value = true;
currentCameraDevice.value = (_b = deviceManager.instance) == null ? void 0 : _b.getCurrentDevice({
type: TUIMediaDeviceType.kMediaDeviceTypeVideoCamera
});
}
async function onDeviceChanged(eventInfo) {
var _a, _b;
const { deviceId, type, state } = eventInfo;
if (!deviceManager.instance || type !== TUIMediaDeviceType.kMediaDeviceTypeVideoCamera) {
return;
}
const deviceTypeTextObj = {
[TUIMediaDeviceType.kMediaDeviceTypeAudioInput]: "mic",
[TUIMediaDeviceType.kMediaDeviceTypeAudioOutput]: "speaker",
[TUIMediaDeviceType.kMediaDeviceTypeVideoCamera]: "camera",
[TUIMediaDeviceType.kMediaDeviceTypeUnknown]: "unknown"
};
const stateTextObj = {
[TUIMediaDeviceState.kMediaDeviceStateAdd]: "add",
[TUIMediaDeviceState.kMediaDeviceStateRemove]: "remove",
[TUIMediaDeviceState.kMediaDeviceStateActive]: "active"
};
logger.log(
`onDeviceChanged: deviceId: ${deviceId}, type: ${deviceTypeTextObj[type]}, state: ${stateTextObj[state]}`
);
cameraList.value = await ((_a = deviceManager.instance) == null ? void 0 : _a.getDevicesList({ type })) || [];
currentCameraDevice.value = (_b = deviceManager.instance) == null ? void 0 : _b.getCurrentDevice({
type: TUIMediaDeviceType.kMediaDeviceTypeVideoCamera
});
}
export {
initMediaDeviceList,
onDeviceChanged
};