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,
62 lines (58 loc) • 2.13 kB
text/typescript
import {
TUIMediaDeviceType,
TUIMediaDeviceState,
} from '@tencentcloud/tuiroom-engine-js';
import logger from '../../../utils/common/logger';
import useVideoDeviceManagerState, {
isCameraListInitiated,
} from './videoDeviceManagerState';
import useDeviceManager from '../../../hooks/useDeviceManager';
const deviceManager = useDeviceManager();
const { cameraList, currentCameraDevice } = useVideoDeviceManagerState();
export async function initMediaDeviceList() {
if (!deviceManager.instance) {
return;
}
cameraList.value = await deviceManager.instance?.getDevicesList({
type: TUIMediaDeviceType.kMediaDeviceTypeVideoCamera,
});
isCameraListInitiated.value = true;
currentCameraDevice.value = deviceManager.instance?.getCurrentDevice({
type: TUIMediaDeviceType.kMediaDeviceTypeVideoCamera,
});
}
/**
* Device changes: device switching, device plugging and unplugging events
**/
export async function onDeviceChanged(eventInfo: {
deviceId: string;
type: TUIMediaDeviceType;
state: TUIMediaDeviceState;
}) {
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 deviceManager.instance?.getDevicesList({ type })) || [];
currentCameraDevice.value = deviceManager.instance?.getCurrentDevice({
type: TUIMediaDeviceType.kMediaDeviceTypeVideoCamera,
});
}