/** * FFmpeg Node.js Native Addon Type Definitions * * This addon provides FFmpeg functionality for Node.js including: * - Video information extraction with thumbnail generation * - Audio/Video duration detection * - Audio format conversion to NTSILK * - Audio decoding to PCM */ /** * Video information result object */ export interface VideoInfo { /** Video width in pixels */ width: number; /** Video height in pixels */ height: number; /** Video duration in seconds */ duration: number; /** Container format name (e.g., "mp4", "mkv", "avi") */ format: string; /** Video codec name (e.g., "h264", "hevc", "vp9") */ videoCodec: string; /** First frame thumbnail as BMP image buffer */ image: Buffer; } /** * Audio PCM decoding result object */ export interface AudioPCMResult { /** PCM audio data as 16-bit signed integer samples */ pcm: Buffer; /** Sample rate in Hz (e.g., 44100, 48000, 24000) */ sampleRate: number; /** Number of audio channels (1 for mono, 2 for stereo) */ channels: number; } /** * FFmpeg interface providing all audio/video processing methods */ export interface FFmpeg { convertFile (inputFile: string, outputFile: string, format: string): Promise<{ success: boolean; }>; /** * Get video information including resolution, duration, format, codec and first frame thumbnail */ getVideoInfo (filePath: string, format?: 'bmp' | 'bmp24'): Promise; /** * Get duration of audio or video file in seconds */ getDuration (filePath: string): Promise; /** * Convert audio file to NTSILK format (WeChat voice message format) */ convertToNTSilkTct (inputPath: string, outputPath: string): Promise; /** * Decode audio file to raw PCM data */ decodeAudioToPCM (filePath: string, pcmPath: string, sampleRate?: number): Promise<{ result: boolean, sampleRate: number; }>; decodeAudioToFmt (filePath: string, pcmPath: string, format: string): Promise<{ channels: number; sampleRate: number; format: string; }>; }