--- category: Sensors related: useDevicesList, usePermission --- # useUserMedia Reactive [`mediaDevices.getUserMedia`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) streaming. ## Usage ```vue ``` ### Devices ```ts import { useDevicesList, useUserMedia } from '@vueuse/core' import { computed, reactive } from 'vue' const { videoInputs: cameras, audioInputs: microphones, } = useDevicesList({ requestPermissions: true, }) const currentCamera = computed(() => cameras.value[0]?.deviceId) const currentMicrophone = computed(() => microphones.value[0]?.deviceId) const { stream } = useUserMedia({ constraints: reactive({ video: { deviceId: currentCamera }, audio: { deviceId: currentMicrophone, } }) }) ``` ## Type Declarations ```ts export interface UseUserMediaOptions extends ConfigurableNavigator { /** * If the stream is enabled * @default false */ enabled?: MaybeRef /** * Recreate stream when deviceIds or constraints changed * * @default true */ autoSwitch?: MaybeRef /** * MediaStreamConstraints to be applied to the requested MediaStream * If provided, the constraints will override videoDeviceId and audioDeviceId * * @default {} */ constraints?: MaybeRef } export interface UseUserMediaReturn extends Supportable { stream: Ref start: () => Promise stop: () => void restart: () => Promise constraints: Ref enabled: ShallowRef autoSwitch: ShallowRef } /** * Reactive `mediaDevices.getUserMedia` streaming * * @see https://vueuse.org/useUserMedia * @param options */ export declare function useUserMedia( options?: UseUserMediaOptions, ): UseUserMediaReturn ```