UNPKG

ffmpeg-stream-manager

Version:

🎥 A powerful TypeScript library for managing multiple simultaneous RTMP streams using FFmpeg. Perfect for streaming to platforms like YouTube Live, Twitch, and others.

88 lines • 2.32 kB
export interface StreamConfig { id: string; rtmpUrl: string; inputType: 'video' | 'audio'; inputPath: string | string[]; staticImagePath: string | undefined; loop: boolean; videoConfig: VideoConfig; audioConfig: AudioConfig; presetConfig: PresetConfig; } export interface VideoConfig { width: number; height: number; bitrate: string; framerate: number; codec: string; profile: string | undefined; level: string | undefined; } export interface AudioConfig { codec: string; bitrate: string; sampleRate: number; channels: number; } export interface PresetConfig { preset: string; tune: string | undefined; bufsize: string | undefined; maxrate: string | undefined; } export interface StreamStatus { id: string; status: StreamState; startTime: Date | undefined; uptime: number | undefined; restartCount: number; lastError: string | undefined; ffmpegPid: number | undefined; config: StreamConfig; } export declare enum StreamState { STOPPED = "stopped", STARTING = "starting", RUNNING = "running", PAUSED = "paused", ERROR = "error", RESTARTING = "restarting" } export interface StreamUpdate { rtmpUrl?: string; inputPath?: string | string[]; videoConfig?: Partial<VideoConfig>; audioConfig?: Partial<AudioConfig>; presetConfig?: Partial<PresetConfig>; loop?: boolean; } export interface PlaylistConfig { files: string[]; mode: 'sequential' | 'random' | 'weighted'; weights?: number[]; transition?: 'cut' | 'fade' | 'crossfade'; transitionDuration?: number; } export interface FFmpegLog { streamId: string; timestamp: Date; level: 'info' | 'error' | 'warning'; message: string; source: 'stdout' | 'stderr'; } export interface StreamManagerOptions { maxConcurrentStreams?: number; autoRestart?: boolean; restartDelay?: number; logLevel?: 'debug' | 'info' | 'warning' | 'error'; } export interface YouTubeRTMPConfig { streamKey: string; server: string | undefined; } export declare class StreamError extends Error { streamId: string; code?: string | undefined; constructor(message: string, streamId: string, code?: string | undefined); } //# sourceMappingURL=index.d.ts.map