initial
This commit is contained in:
138
dist_ts/interfaces.d.ts
vendored
Normal file
138
dist_ts/interfaces.d.ts
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
/**
|
||||
* Video codec options
|
||||
*/
|
||||
export type TVideoCodec = 'libx264' | 'libx265' | 'libvpx' | 'libvpx-vp9' | 'libaom-av1' | 'mpeg4' | 'copy' | string;
|
||||
/**
|
||||
* Audio codec options
|
||||
*/
|
||||
export type TAudioCodec = 'aac' | 'libmp3lame' | 'libopus' | 'libvorbis' | 'flac' | 'pcm_s16le' | 'copy' | string;
|
||||
/**
|
||||
* Output format/container
|
||||
*/
|
||||
export type TOutputFormat = 'mp4' | 'webm' | 'mkv' | 'avi' | 'mov' | 'flv' | 'mp3' | 'wav' | 'ogg' | 'flac' | 'm4a' | 'gif' | string;
|
||||
/**
|
||||
* Preset for encoding speed/quality tradeoff
|
||||
*/
|
||||
export type TPreset = 'ultrafast' | 'superfast' | 'veryfast' | 'faster' | 'fast' | 'medium' | 'slow' | 'slower' | 'veryslow';
|
||||
/**
|
||||
* Media information from ffprobe
|
||||
*/
|
||||
export interface IMediaInfo {
|
||||
format: {
|
||||
filename: string;
|
||||
formatName: string;
|
||||
formatLongName: string;
|
||||
duration: number;
|
||||
size: number;
|
||||
bitrate: number;
|
||||
};
|
||||
streams: IStreamInfo[];
|
||||
}
|
||||
/**
|
||||
* Stream information
|
||||
*/
|
||||
export interface IStreamInfo {
|
||||
index: number;
|
||||
codecName: string;
|
||||
codecLongName: string;
|
||||
codecType: 'video' | 'audio' | 'subtitle' | 'data';
|
||||
width?: number;
|
||||
height?: number;
|
||||
frameRate?: number;
|
||||
bitrate?: number;
|
||||
sampleRate?: number;
|
||||
channels?: number;
|
||||
duration?: number;
|
||||
}
|
||||
/**
|
||||
* Conversion options
|
||||
*/
|
||||
export interface IConversionOptions {
|
||||
/** Output format/container */
|
||||
format?: TOutputFormat;
|
||||
/** Video codec */
|
||||
videoCodec?: TVideoCodec;
|
||||
/** Audio codec */
|
||||
audioCodec?: TAudioCodec;
|
||||
/** Video bitrate (e.g., '1M', '2000k') */
|
||||
videoBitrate?: string;
|
||||
/** Audio bitrate (e.g., '128k', '320k') */
|
||||
audioBitrate?: string;
|
||||
/** Output width (height auto-scaled if not specified) */
|
||||
width?: number;
|
||||
/** Output height (width auto-scaled if not specified) */
|
||||
height?: number;
|
||||
/** Frame rate */
|
||||
fps?: number;
|
||||
/** Audio sample rate in Hz */
|
||||
sampleRate?: number;
|
||||
/** Audio channels (1 for mono, 2 for stereo) */
|
||||
audioChannels?: number;
|
||||
/** Encoding preset (speed/quality tradeoff) */
|
||||
preset?: TPreset;
|
||||
/** Constant Rate Factor for quality (0-51, lower is better) */
|
||||
crf?: number;
|
||||
/** Start time in seconds or timecode string */
|
||||
startTime?: number | string;
|
||||
/** Duration in seconds or timecode string */
|
||||
duration?: number | string;
|
||||
/** Remove audio track */
|
||||
noAudio?: boolean;
|
||||
/** Remove video track */
|
||||
noVideo?: boolean;
|
||||
/** Additional ffmpeg arguments */
|
||||
extraArgs?: string[];
|
||||
/** Overwrite output file if exists */
|
||||
overwrite?: boolean;
|
||||
}
|
||||
/**
|
||||
* Progress information during conversion
|
||||
*/
|
||||
export interface IProgressInfo {
|
||||
/** Current frame number */
|
||||
frame: number;
|
||||
/** Frames per second being processed */
|
||||
fps: number;
|
||||
/** Current quality metric */
|
||||
q: number;
|
||||
/** Output file size so far */
|
||||
size: number;
|
||||
/** Current time position in seconds */
|
||||
time: number;
|
||||
/** Current bitrate */
|
||||
bitrate: string;
|
||||
/** Processing speed (e.g., 1.5x realtime) */
|
||||
speed: string;
|
||||
/** Progress percentage (0-100) if duration known */
|
||||
percent?: number;
|
||||
}
|
||||
/**
|
||||
* Screenshot options
|
||||
*/
|
||||
export interface IScreenshotOptions {
|
||||
/** Time position in seconds or timecode string */
|
||||
time: number | string;
|
||||
/** Output width */
|
||||
width?: number;
|
||||
/** Output height */
|
||||
height?: number;
|
||||
/** Output format (default: 'png') */
|
||||
format?: 'png' | 'jpg' | 'webp';
|
||||
/** Quality for jpg/webp (1-100) */
|
||||
quality?: number;
|
||||
}
|
||||
/**
|
||||
* Thumbnail generation options
|
||||
*/
|
||||
export interface IThumbnailOptions {
|
||||
/** Number of thumbnails to generate */
|
||||
count: number;
|
||||
/** Output width */
|
||||
width?: number;
|
||||
/** Output height */
|
||||
height?: number;
|
||||
/** Output format */
|
||||
format?: 'png' | 'jpg' | 'webp';
|
||||
/** Filename pattern (use %d for number) */
|
||||
filenamePattern?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user