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
+5 -1
View File
@@ -182,6 +182,7 @@ nice -n 10 ffmpeg -i src \
-c:v libx264 -preset veryfast -crf 21 -maxrate 4500k -bufsize 9000k \
-vf "scale='min(1920,iw)':-2" \
-force_key_frames "expr:gte(t,n_forced*2)" -sc_threshold 0 \
-af "loudnorm=I=-16:TP=-1.5:LRA=11" \
-c:a aac -b:a 128k -ac 2 -ar 48000 \
-f hls -hls_time 2 -hls_playlist_type vod -hls_list_size 0 \
-hls_segment_filename seg%05d.ts index.m3u8
@@ -191,7 +192,10 @@ nice -n 10 ffmpeg -i src \
- `-force_key_frames expr:gte(t,n_forced*2)` надёжнее фиксированного `-g` при нецелых fps.
- `-sc_threshold 0` убирает сцен-детект, иначе сегменты перестанут быть ровными.
- `maxrate 4500k` — ключевой кадр каждые 2с стоит ~5–10% битрейта.
- `-threads 3` + `nice` оставляют ядро эфиру. Финальный шаг — добивка хвоста до кратности 2с.
- `loudnorm=I=-16:TP=-1.5:LRA=11` — нормализация громкости (EBU R128), чтобы все ролики звучали
одинаково; цель настраивается (`Media__LoudnessTargetLufs`), можно выключить (`Media__NormalizeLoudness`).
- `-threads 3` + `nice` оставляют ядро эфиру. Финальный шаг — добивка хвоста до кратности 2с
(`-af ...,apad=pad_dur=PAD -t TARGET`).
Очередь обработки: `System.Threading.Channels` + `BackgroundService`, строго одна задача за раз.
Inbox-сканер — второй `BackgroundService`: замечает новый файл, ждёт стабилизации размера, заводит