UNPKG

@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,

77 lines (76 loc) 3.18 kB
import { TUIMediaDeviceType, TUIMediaDeviceState } from "@tencentcloud/tuiroom-engine-js"; import useDeviceManager from "../../../hooks/useDeviceManager.mjs"; import logger from "../../../utils/common/logger/index.mjs"; import useAudioDeviceManagerState, { isMicrophoneListInitiated, isSpeakerListInitiated } from "./audioDeviceManagerState.mjs"; const { microphoneList, currentMicrophoneDevice, speakerList, currentSpeakerDevice } = useAudioDeviceManagerState(); const deviceManager = useDeviceManager(); async function initMediaDeviceList() { var _a, _b, _c, _d; if (!deviceManager.instance) { return; } microphoneList.value = await ((_a = deviceManager.instance) == null ? void 0 : _a.getDevicesList({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioInput })) || []; isMicrophoneListInitiated.value = true; speakerList.value = await ((_b = deviceManager.instance) == null ? void 0 : _b.getDevicesList({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioOutput })) || []; isSpeakerListInitiated.value = true; currentMicrophoneDevice.value = (_c = deviceManager.instance) == null ? void 0 : _c.getCurrentDevice({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioInput }); currentSpeakerDevice.value = (_d = deviceManager.instance) == null ? void 0 : _d.getCurrentDevice({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioOutput }); } async function onDeviceChanged(eventInfo) { var _a, _b, _c, _d; 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]}` ); if (type === TUIMediaDeviceType.kMediaDeviceTypeAudioInput) { microphoneList.value = await ((_a = deviceManager.instance) == null ? void 0 : _a.getDevicesList({ type })) || []; if (state === TUIMediaDeviceState.kMediaDeviceStateActive) { currentMicrophoneDevice.value = ((_b = deviceManager.instance) == null ? void 0 : _b.getCurrentDevice({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioInput })) || null; } } if (type === TUIMediaDeviceType.kMediaDeviceTypeAudioOutput) { speakerList.value = await ((_c = deviceManager.instance) == null ? void 0 : _c.getDevicesList({ type })) || []; if (state === TUIMediaDeviceState.kMediaDeviceStateActive) { currentSpeakerDevice.value = ((_d = deviceManager.instance) == null ? void 0 : _d.getCurrentDevice({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioOutput })) || null; } } } export { initMediaDeviceList, onDeviceChanged };