@henteko/kumiki
Version:
A video generation tool that creates videos from JSON configurations
111 lines • 3.37 kB
TypeScript
export interface FFmpegOptions {
input: string;
output: string;
additionalArgs?: string[];
onProgress?: (progress: number) => void;
}
export interface ConcatOptions {
inputs: string[];
output: string;
onProgress?: (progress: number) => void;
}
export interface ImageToVideoOptions {
input: string;
output: string;
duration: number;
fps: number;
resolution: string;
onProgress?: (progress: number) => void;
}
export interface VideoTrimOptions {
input: string;
output: string;
start: number;
duration: number;
resolution?: string;
onProgress?: (progress: number) => void;
}
export declare class FFmpegService {
private static instance;
private constructor();
/**
* Get singleton instance
*/
static getInstance(): FFmpegService;
/**
* Check if FFmpeg is installed
*/
checkInstallation(): Promise<boolean>;
/**
* Convert image to video
*/
imageToVideo(options: ImageToVideoOptions): Promise<void>;
/**
* Trim video
*/
trimVideo(options: VideoTrimOptions): Promise<void>;
/**
* Concatenate videos
*/
concatenate(options: ConcatOptions): Promise<void>;
/**
* Helper method to concatenate videos using concat list
*/
private concatenateWithList;
/**
* Apply fade transition between two videos
*/
fadeTransition(video1: string, video2: string, output: string, duration: number): Promise<void>;
/**
* Apply wipe transition between two videos
*/
wipeTransition(video1: string, video2: string, output: string, duration: number, direction?: 'left' | 'right' | 'up' | 'down'): Promise<void>;
/**
* Apply dissolve transition between two videos
*/
dissolveTransition(video1: string, video2: string, output: string, duration: number): Promise<void>;
/**
* Add audio to video
*/
addAudio(videoPath: string, audioPath: string, outputPath: string, volume?: number): Promise<void>;
/**
* Mix background music with existing audio (e.g., narration)
*/
mixBackgroundMusic(videoPath: string, musicPath: string, outputPath: string, options?: {
musicVolume?: number;
existingAudioVolume?: number;
fadeIn?: number;
fadeOut?: number;
}): Promise<void>;
/**
* Add narration track to video with existing audio
*/
addNarrationTrack(videoPath: string, narrationPath: string, outputPath: string, options?: {
narrationVolume?: number;
bgmVolume?: number;
delay?: number;
fadeIn?: number;
fadeOut?: number;
}): Promise<void>;
/**
* Add audio to video with fade in/out effects
*/
addAudioWithFade(videoPath: string, audioPath: string, outputPath: string, volume?: number, fadeIn?: number, fadeOut?: number): Promise<void>;
/**
* Execute FFmpeg command
*/
execute(command: string, args: string[], onProgress?: (progress: number) => void, stdin?: string): Promise<void>;
/**
* Check if video has audio stream
*/
hasAudioStream(videoPath: string): Promise<boolean>;
/**
* Get video duration in seconds
*/
private getVideoDuration;
/**
* Ensure output directory exists
*/
private ensureOutputDirectory;
}
//# sourceMappingURL=ffmpeg.d.ts.map