Pull to refresh

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

Reading time 2 min
Views 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

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

Читать вторую часть про реализацию
Tags:
Hubs:
+13
Comments 11
Comments Comments 11

Articles