UNPKG

@api.video/media-stream-composer

Version:
108 lines (107 loc) 3.02 kB
import { DragEvent } from "../mouse-event-listener"; import { Position, Resolution, StreamMask, StreamPosition, StreamPositionType } from "../stream-position"; interface StreamAudio { audioSource?: MediaStreamAudioSourceNode; audioOutput?: GainNode; } interface StreamDisplaySettings { displayResolution: Resolution; streamResolution: Resolution; position: Position; radius?: number; } type StreamType = "AUDIO" | "VIDEO"; export interface StreamOptions { name?: string; position: StreamPosition; draggable: boolean; resizable: boolean; mask: StreamMask; mute: boolean; hidden: boolean; opacity: number; index: number; onClick?: (streamId: string, event: { x: number; y: number; }) => void; } export interface StreamDetails { type: StreamType; id: string; options: StreamOptions; displaySettings?: StreamDisplaySettings; stream?: MediaStream; streamVideo?: CanvasImageSource; streamAudio?: StreamAudio; } interface BanubaEffect { clientToken: string; moduleUrls?: string[]; effectUrl?: string; } export interface StreamUserOptions { name?: string; position?: StreamPositionType; x?: number; y?: number; width?: number; height?: number; draggable?: boolean; resizable?: boolean; mask?: StreamMask; index?: number; mute?: boolean; hidden?: boolean; opacity?: number; onClick?: (streamId: string, event: { x: number; y: number; }) => void; banubaEffect?: BanubaEffect; } export declare class Stream { private static lastStreamId; private id; private name?; private position; private draggable; private resizable; private mask; private mute; private hidden; private opacity; private onClick?; private mediaStream?; private videoElement?; private streamAudio?; private type; private displaySettings?; private containerResolution; private audioDelayNode; constructor(type: StreamType, audioDelayNode: DelayNode, containerResolution: Resolution); load(mediaStream: MediaStream | CanvasImageSource, audioContext: AudioContext, options: StreamUserOptions): Promise<void>; private createBanubaEffect; getId(): string; updateOptions(userOptions: StreamUserOptions): { streamResolution: { width: number; height: number; }; displayResolution: Resolution; position: Position; radius?: number | undefined; } | undefined; destroy(): void; getDisplaySettings(): StreamDisplaySettings | undefined; getStreamDetails(): StreamDetails; updatePosition(position: StreamPosition): void; draw(canvasRenderingContext: CanvasRenderingContext2D): void; hasDisplay(): boolean; onMouseDrag(e: DragEvent): void; private onMouseResize; private updateDisplaySettings; private createStreamVideoElement; private createStreamAudioElement; } export {};