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
TypeScript
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