UNPKG

@api.video/media-stream-composer

Version:
85 lines (84 loc) 3.11 kB
import { Options as RecorderOptions, ProgressiveUploaderOptionsWithAccessToken, ProgressiveUploaderOptionsWithUploadToken, VideoUploadResponse } from "@api.video/media-recorder"; import { DrawingSettings } from "./drawing-layer"; import { Resolution } from "./stream-position"; import { StreamDetails, StreamUserOptions } from "./stream/stream"; export { StreamDetails }; export interface Options { resolution: Resolution; } export interface AudioSourceDetails { id: string; stream: MediaStream; } declare type EventType = "error" | "recordingStopped" | "videoPlayable"; declare global { interface Window { AudioContext: AudioContext; webkitAudioContext: any; } interface AudioContext { createGainNode: any; } interface HTMLCanvasElement { captureStream(frameRate?: number): MediaStream; } interface HTMLMediaElement { _mediaElementSource: any; } interface HTMLVideoElement { playsInline: boolean; } } export type MouseTool = "draw" | "move-resize"; type RecordingOptions = RecorderOptions & (ProgressiveUploaderOptionsWithUploadToken | ProgressiveUploaderOptionsWithAccessToken) & { timeslice?: number; }; export declare class MediaStreamComposer { private result; private recorder?; private streams; private eventTarget; private fps; private resolution; private audioContext?; private audioDestinationNode?; private audioDelayNode?; private canvas?; private canvasRenderingContext; private frameCount; private started; private mouseTool; private drawingLayer; constructor(options: Partial<Options>); private init; private _backgroundAudioHack; getResultStream(): MediaStream | null; static getSupportedMimeTypes(): string[]; startRecording(options: RecordingOptions): void; destroy(): void; addEventListener(type: EventType, callback: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions | undefined): void; stopRecording(): Promise<VideoUploadResponse>; updateStream(streamId: string, userOptions: StreamUserOptions): void; appendCanvasTo(containerQuerySelector: string): void; removeStream(streamId: string): void; addAudioSource(mediaStream: MediaStream): string; removeAudioSource(id: string): void; addStream(mediaStream: MediaStream | HTMLImageElement, userOptions: StreamUserOptions): Promise<string>; getCanvas(): HTMLCanvasElement | undefined; getAudioSources(): AudioSourceDetails[]; getAudioSource(id: string): AudioSourceDetails | undefined; getStreams(): StreamDetails[]; getStream(id: string): StreamDetails | undefined; moveUp(streamId: string): void; moveDown(streamId: string): void; setMouseTool(tool: MouseTool): void; setDrawingSettings(settings: Partial<DrawingSettings>): void; clearDrawing(): void; private dispatch; private _draw; private _requestAnimationFrame; private _updateAudioDelay; private onMouseMove; private onMouseDragEnd; private onMouseDrag; }