export interface LoudnessTarget { /** Integrated loudness target (LUFS). Negative number, e.g. -14. */ integratedLufs: number; /** True peak ceiling (dBTP). Default -1. */ truePeakDb?: number; /** Loudness range target (LU). Default 11. */ loudnessRange?: number; } export declare const PLATFORM_TARGETS: Record; export interface LoudnessMeasurement { inputI: number; inputTp: number; inputLra: number; inputThresh: number; /** Offset ffmpeg recommends in pass 2 (dB). */ targetOffset: number; } export interface LoudnormJson { input_i: string; input_tp: string; input_lra: string; input_thresh: string; output_i?: string; output_tp?: string; output_lra?: string; output_thresh?: string; normalization_type?: string; target_offset: string; } /** * Pass 1 — measure source loudness. Runs the filter in print_format=json mode * and discards the audio. Parses the JSON block ffmpeg writes to stderr. * * Pass `dualMono: true` for MONO sources (most podcasts). Without it loudnorm * under-measures mono content by ~3 LU and pass 2 over-corrects. The * `normalize_loudness` tool auto-detects this from probe output. */ export declare function measureLoudness(inputPath: string, opts?: { signal?: AbortSignal; dualMono?: boolean; }): Promise; /** * Pass 2 — apply loudnorm with measured_* params + the chosen target. Writes a * new media file. Audio codec defaults to AAC for video, or PCM for .wav out. */ export declare function applyLoudnorm(inputPath: string, outputPath: string, measurement: LoudnessMeasurement, target: LoudnessTarget, opts?: { signal?: AbortSignal; dualMono?: boolean; }): Promise; /** Extract the LAST {...} JSON block from a string. ffmpeg prints prefix lines. */ export declare function extractJsonBlock(s: string): string | undefined; //# sourceMappingURL=loudness.d.ts.map