Add loudness normalization settings: introduce NormalizeLoudness and LoudnessTargetLufs options in configuration files, update FfmpegMediaProcessor to apply loudness normalization during media processing, and document changes in media storage guide.

This commit is contained in:
Leonid Pershin
2026-07-24 23:08:10 +03:00
parent 65f2a1d4ec
commit 0891b4e6a8
5 changed files with 34 additions and 3 deletions
@@ -124,10 +124,24 @@ public sealed class FfmpegMediaProcessor(
"48000",
};
// Аудиофильтры: нормализация громкости (EBU R128, чтобы все ролики звучали одинаково) и,
// при добивке хвоста, тишина apad. Порядок: сначала loudnorm по реальному звуку, потом apad.
var afilters = new List<string>();
if (_media.NormalizeLoudness)
afilters.Add(
$"loudnorm=I={_media.LoudnessTargetLufs.ToString(CultureInfo.InvariantCulture)}:TP=-1.5:LRA=11"
);
if (padding)
afilters.Add($"apad=pad_dur={Fmt(pad)}");
if (afilters.Count > 0)
{
args.Add("-af");
args.Add($"apad=pad_dur={Fmt(pad)}");
args.Add(string.Join(",", afilters));
}
if (padding)
{
args.Add("-t");
args.Add(Fmt(target));
}