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).