import { type ThumbnailOptions } from "./getThumbnail.js"; /** 转码进度信息,用于 onProgress 回调 */ export interface TranscodeProgress { /** 当前阶段 */ phase: "encoding" | "done"; /** 总进度 0–100 */ percent: number; /** 可读描述 */ message?: string; /** 当前已处理时长(秒) */ currentTime?: number; /** 视频总时长(秒) */ duration?: number; } export interface TranscodingConfig { /** 是否生成缩略图,默认 true */ generateThumbnail?: boolean; /** 缩略图生成参数,不传则使用 getThumbnail 默认值(如 frames=60, outputWidth=3840, columns=4, format=avif 等) */ thumbnailOptions?: Partial; /** 目标编码格式,默认 'hevc' */ format?: "av1" | "hevc"; /** 是否强制使用软编码(禁用硬件编码),默认 false */ forceSoftware?: boolean; /** 是否替换原文件(删除原文件并将输出重命名为原路径),默认 false */ replaceOriginal?: boolean; /** 转换进度回调 */ onProgress?: (progress: TranscodeProgress) => void; } export interface AvailableEncoders { av1Nvenc: boolean; libaomAv1: boolean; hevcNvenc: boolean; libx265: boolean; /** macOS 上的 HEVC 硬编码(VideoToolbox) */ hevcVideoToolbox: boolean; } /** 同步检测可用编码器 */ export declare function getAvailableEncoders(): AvailableEncoders; export interface TranscodingResult { /** 转码输出文件路径(替换原文件时为原路径,否则为 {base}_hevc.mp4 或 {base}_av1.mp4) */ outputPath: string; } /** * 将视频转码为 HEVC 或 AV1,不依赖 shelljs,使用 Node 内置 child_process 与 fs。 * 支持转换进度回调;默认生成新文件,不替换原文件。 */ export declare function transcoding(inputPath: string, config?: TranscodingConfig): Promise;