mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-11 23:40:24 +00:00
Introduced FFmpeg Node.js native addon binaries for multiple platforms (darwin-arm64, linux-arm64, linux-x64, win-x64) and added TypeScript type definitions for the addon interface, including video info extraction, duration detection, audio conversion, and PCM decoding.
71 lines
1.8 KiB
TypeScript
71 lines
1.8 KiB
TypeScript
/**
|
|
* 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 {
|
|
/**
|
|
* Get video information including resolution, duration, format, codec and first frame thumbnail
|
|
*/
|
|
getVideoInfo(filePath: string, format?: 'bmp' | 'bmp24'): Promise<VideoInfo>;
|
|
|
|
/**
|
|
* Get duration of audio or video file in seconds
|
|
*/
|
|
getDuration(filePath: string): Promise<number>;
|
|
|
|
/**
|
|
* Convert audio file to NTSILK format (WeChat voice message format)
|
|
*/
|
|
convertToNTSilkTct(inputPath: string, outputPath: string): Promise<void>;
|
|
|
|
/**
|
|
* Decode audio file to raw PCM data
|
|
*/
|
|
decodeAudioToPCM(filePath: string): Promise<AudioPCMResult>;
|
|
} |