[Из песочницы] EBU128: Пакетная нормализация громкости аудио/видео файлов
Всем привет! Решил поделиться опытом автоматизации контроля громкости вещания своего СМИ. Думаю, у всех профильных технарей давно болит голова, точно продолжает болеть. Введенная Минкомсвязи рекомендация в области нормирования громкости звуковых сигналов вызвала волны возмущения.
После измерения предлагается применить громкость к дорожке двумя способами:
2. Используя утилиту FFmpeg заменить/добавить аудиодорожку к фидеофайлу:
Я выбрал первый вариант. Чтобы выделить звук из моих видеофайлов, я использую ffmpeg:
Нормализация:
Сборка готового видео файла. Так как кроме старых файлов имеется постоянный поток сторонних, приводим к единому формату. У меня используется такой стандарт:
Сборка:
На выходе получаем продукт в едином формате.
Не было предоставлено ни средств контроля, ни средств производства. Крутитесь как хотите.
Впрочем, уже давно, задолго до того знакового события существуют различные плагины к монтажным программам, но как быть если уже накоплена огроменная медиабаза?
Побродил я по просторам интернета и наткнулся на очень, по моему мнению, элегантное решение. Причем, к радости моей, это оказалось свободное ПО. Проект называется r128gain.
r128gain измеряет громкость аудио файлов. Понимает она, насколько я выяснил, два формата:
- 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=720:-1,pad=720:576:(ow-iw)/2:(oh-ih)/2 -flags +ilme+ildct -c:a mp2 -map 0:v:0 -map 1:a:0 out.mpg -y
На выходе получаем продукт в едином формате.
Спасибо за внимание! Надеюсь, моя статья окажется для вас полезной.