Skip to main content

Interface: LoudnessNormalizationOptions

Defined in: packages/player/src/player.ts:1606

Options for Player.setLoudnessNormalization.

Every field is optional; an omitted field falls back to the default named on it. The names and units are ffmpeg loudnorm's own (verified against the FFmpeg 8.1.2 tree our binaries are built from — libavfilter/af_loudnorm.c and doc/filters.texi), so a value copied from any loudnorm reference means the same thing here.

Properties

dualMono?

readonly optional dualMono?: boolean;

Defined in: packages/player/src/player.ts:1642

Treat a mono file as dual-mono (dual_mono). Defaults to ffmpeg's false. Set it when mono content is played on stereo outputs and sounds ~3 dB too loud after normalization — that offset is exactly what this compensates (ffmpeg doc/filters.texi, loudnorm dual_mono).


loudnessRange?

readonly optional loudnessRange?: number;

Defined in: packages/player/src/player.ts:1627

Loudness range target in LU (LRA), 1 … 50. Defaults to ffmpeg's 7 (af_loudnorm.c:109).

In the one-pass dynamic mode this API runs in, this is a shaping hint for how hard the gain ride may compress loudness variation, not a guarantee of the output's measured LRA.


targetLufs?

readonly optional targetLufs?: number;

Defined in: packages/player/src/player.ts:1618

Integrated loudness target in LUFS (loudnorm's I), -70 … -5.

Defaults to DEFAULT_LOUDNESS_TARGET_LUFS (−16 LUFS) — not ffmpeg's own −24, which is a broadcast-derived number. −16 LUFS is AES TD1008.1.21-9's recommendation for track-normalized music on streaming services ("Recommendations for Loudness of Internet Audio Streaming and On-Demand Distribution", Table 1: track-normalized music −16 LUFS; Table 2: pop-music streams −16 LUFS, news/talk −18). On phone hardware −24 leaves music so quiet that users max the volume and blame the app.


truePeakDb?

readonly optional truePeakDb?: number;

Defined in: packages/player/src/player.ts:1635

Maximum true peak in dBTP (TP), -9 … 0. Defaults to ffmpeg's -2 (af_loudnorm.c:111) — 1 dB more conservative than the −1 dBTP ceiling AES TD1008 asks of streams at the codec input, which buys headroom against lossy-decoder overshoot for free (the ceiling only matters when the limiter is already engaging).