Как стать автором
Обновить

EBU R128/BS.1770-3: Пакетная нормализация громкости аудио/видео файлов

Время на прочтение2 мин
Количество просмотров16K
Всем привет!
Решил поделиться опытом автоматизации контроля громкости вещания своего СМИ. Думаю, у всех профильных технарей давно болит голова, точно продолжает болеть. Введенная Минкомсвязи рекомендация в области нормирования громкости звуковых сигналов вызвала волны возмущения.
Не было предоставлено ни средств контроля, ни средств производства. Крутитесь как хотите.
Впрочем, уже давно, задолго до того знакового события существуют различные плагины к монтажным программам.
Но как быть если уже накоплена огроменная медиабаза?
image

Побродил я по просторам интернета и наткнулся на очень, по моему мнению, элегантное решение. Причем, к радости моей, это оказалось свободное ПО. Проект называется r128gain.

r128gain измеряет громкость аудио файлов в единицах измерения LUFS. Понимает она, насколько я выяснил, два формата:

  • FLAC
  • PCM signed 16 bit little endian (Microsoft WAVE)

После измерения предлагается применить громкость к дорожке двумя способами:

1. Используя утилиту SoX — Sound eXchange, получить причесанный звук:

r128gain "--command=sox %TRACK% out.wav|flac gain %TGDB%" in.wav|flac -o .

2. Используя утилиту FFmpeg заменить/добавить аудиодорожку к фидеофайлу:

r128gain "--command=ffmpeg -i %TRACK% -vcodec copy -acodec flac -af volume=%TG% -y out.mkv" in.wav|flac -o.

Я выбрал первый вариант. Чтобы выделить звук из моих видеофайлов, я использую ffmpeg:

ffmpeg -i in.avi -vn -c:a pcm_s16le -ac 2 in.wav -y

Нормализация:

r128gain "--command=sox %TRACK% out.wav|flac gain %TGDB%" in.wav|flac -o .

Сборка готового видео файла. Так как кроме старых файлов имеется постоянный поток сторонних, приводим к единому формату. У меня используется такой стандарт:

video: MPEG2 PAL 720x576
audio: MPEG1 Layer II

Сборка:

ffmpeg -i in.avi -i out.wav -c:v mpeg2video -b 30000k -s pal -r pal -aspect 4:3 -vf scale=min(576*15*sar*iw/ih/16\,720):min(720*16*ih/15/sar/iw\,576),pad=720:576:(ow-iw)/2:(oh-ih)/2 -flags +ilme+ildct -movflags faststart -c:a mp2 -map 0:v:0 -map 1:a:0 out.mpg -y

На выходе получаем продукт в едином формате.

Спасибо за помощь arteastarteast

Спасибо за внимание! Надеюсь, моя статья окажется для вас полезной.

Читать вторую часть про реализацию
Теги:
Хабы:
Всего голосов 13: ↑13 и ↓0+13
Комментарии11

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань