MediaDevices
interface MediaDevices extends EventTarget { ondevicechange: ((this: MediaDevices, ev: Event) => any) | null; enumerateDevices(): Promise<MediaDeviceInfo[]>; getSupportedConstraints(): MediaTrackSupportedConstraints; getUserMedia(constraints: MediaStreamConstraints): Promise<MediaStream>; addEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;}
MediaStreamConstraints
interface MediaStreamConstraints { audio?: boolean | MediaTrackConstraints; peerIdentity?: string; video?: boolean | MediaTrackConstraints;}
MediaStream
interface MediaStreamEventMap { "active": Event; "addtrack": MediaStreamTrackEvent; "inactive": Event; "removetrack": MediaStreamTrackEvent;}interface MediaStream extends EventTarget { readonly active: boolean; readonly id: string; onactive: ((this: MediaStream, ev: Event) => any) | null; onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null; oninactive: ((this: MediaStream, ev: Event) => any) | null; onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null; addTrack(track: MediaStreamTrack): void; clone(): MediaStream; getAudioTracks(): MediaStreamTrack[]; getTrackById(trackId: string): MediaStreamTrack | null; getTracks(): MediaStreamTrack[]; getVideoTracks(): MediaStreamTrack[]; removeTrack(track: MediaStreamTrack): void; stop(): void; addEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;}interface MediaSource extends EventTarget { readonly activeSourceBuffers: SourceBufferList; duration: number; readonly readyState: ReadyState; readonly sourceBuffers: SourceBufferList; addSourceBuffer(type: string): SourceBuffer; endOfStream(error?: EndOfStreamError): void; removeSourceBuffer(sourceBuffer: SourceBuffer): void;}declare var MediaSource: { prototype: MediaSource; new(): MediaSource; isTypeSupported(type: string): boolean;}