Нормализовать различные уровни звука в одном видео

Вопрос или проблема

У меня есть сценарий для обработки/кодирования видео. Некоторые видео имеют разные уровни громкости (например, два видео были объединены, и одно из них имело громкий звук, а другое – тихий). Я хочу нормализовать звук так, чтобы громкий звук был уменьшен, а тихий звук увеличен, чтобы они стали почти равными. Хотя я использую HandbrakeCLI для кодирования, но любое другое решение, например ffmpeg, которое можно использовать из терминала Linux, также подойдет.

Я провел некоторые исследования, но у меня очень ограниченные знания об аудио, поэтому я не смог заставить это работать. Некоторые из решений, которые я исследовал, – это audio-normalize и Replaygain (просто тег, но мне нужно напрямую изменить видео при кодировании, а не просто добавить тег).

У меня есть пример входных данных и пример выходных данных. Пример выходных данных создан вручную путем выбора громкого звука и его уменьшения, а также вручную выбора тихого звука и его увеличения.

Входные данные:
Оригинальный звук

Выходные данные:
Нормализованный звук

Как видно на оригинальном аудио, весь звук тихий, кроме последней небольшой части, которая слишком громкая, а в выходных данных оба почти равны. Но проблема в том, что я хочу сделать это автоматически.

Правка:

Результат ffmpeg -i in.mp4 -af "dynaudnorm" -vcodec copy out.mp4:
После dynaudnorm

Существует также эффект vlevel и соответствующая программа vlevel-bin. Он использует буфер предварительного просмотра, чтобы определить, тише или громче грядущий звук по сравнению с заданным порогом, и начинает изменять громкость, чтобы адаптироваться к тому, что произойдет в ближайшее время.

Плюсы: не требует настройки. Учитывая просто аудиофайл, он установит их на постоянный уровень, так что если каждое видео будет обработано с помощью vlevel, они будут нормализованы относительно друг друга.

Минусы: это не встроенный эффект ffmpeg; вам нужно будет извлечь звук из видео, конвертировать его в правильную битрейт и формат для vlevel-bin, а затем повторно закодировать звук обратно в ваше видео. Это также (по необходимости) уменьшит динамический диапазон вашего аудио. Не до крайностей “войны громкости”, но пики и впадины будут заметно сжаты.

Ранее я использовал это в нескольких телевизионных шоу, которые полагались на постоянные взрывы между тихими разговорными сценами, и это сделало их просмотримыми без необходимости контроля громкости на протяжении всего эпизода.

Ответ или решение

Нормализация звуковых уровней в видео: полное руководство

Ваша задача по нормализации звуковых уровней в видео, особенно когда вы работаете с видеоматериалами, которые могут иметь различные уровни громкости, требует тщательного подхода и использования надлежащих инструментов. Давайте рассмотрим, как это можно сделать с помощью таких инструментов, как FFmpeg.

Причины вариации звуковых уровней

Если несколько видео объединены в одно, может возникнуть проблема, когда одно видео имеет громкий звук, а другое – тихий. Это может вызывать дискомфорт для зрителей, когда им приходится постоянно регулировать громкость. Нормализация аудио в видеофайле — это процесс, который помогает уравновесить эти уровни.

Инструменты для нормализации аудио

Одним из самых мощных и универсальных инструментов для нормализации аудио является FFmpeg. Это свободное программное обеспечение, которое поддерживает различные форматы видео и аудио, и обладает множеством фильтров для обработки звука.

Использование FFmpeg для нормализации

Чтобы автоматизировать процесс нормализации звука, FFmpeg предлагает несколько параметров. Основной фильтр, который мы рассмотрим, — это dynaudnorm. Это динамическая нормализация звука, которая автоматически регулирует уровни громкости.

Шаги по использованию FFmpeg:
  1. Установка FFmpeg: Если FFmpeg еще не установлен на вашей системе, вы можете установить его через пакетный менеджер вашей операционной системы. Например, на Ubuntu это выглядит так:

    sudo apt update
    sudo apt install ffmpeg
  2. Команда для нормализации:
    Используйте следующую команду для нормализации видеофайла:

    ffmpeg -i input.mp4 -af "dynaudnorm" -vcodec copy output.mp4

    Здесь -i input.mp4 — это входной файл, а -vcodec copy указывает на копирование видеодорожки без повторной кодировки, что экономит время и качество видео.

  3. Настройка фильтров:
    Если вы хотите более тонкой настройки, вы можете использовать дополнительные параметры в фильтре dynaudnorm, например:

    ffmpeg -i input.mp4 -af "dynaudnorm=f=10" -vcodec copy output.mp4

    Этот параметр f=10 управляет ответом фильтра на изменение громкости.

Альтернативные подходы

Кроме FFmpeg, существует и другие утилиты, такие как vlevel-bin, которые могут помочь в нормализации звука. Они требуют немного больше ручного вмешательства, так как вам будет нужно извлечь аудио, обработать его, а затем вернуть в видео.

Преимущества и недостатки vlevel-bin:

Преимущества:

  • Не требует настройки и может работать с любым аудиофайлом.
  • Сетевые аудио могут одинаково нормализоваться, если обработаны через vlevel.

Недостатки:

  • Упрощает динамический диапазон аудио, что может неуместно в некоторых случаях.

Заключение

Нормализация звука в видео является важной задачей, особенно в том случае, если вы работаете с несколькими источниками, и вам необходимо обеспечить единообразие уровня громкости. Использование FFmpeg с фильтром dynaudnorm представляет собой один из самых эффективных и автоматизированных методов достижения этого результата. Если вы знакомитесь с процессом обработки аудио, данные методы могут значительно улучшить качество выпускаемого материала и обеспечить более комфортное восприятие вашей аудитории.

Оцените материал
Добавить комментарий

Капча загружается...