Как применить громкость ffmpeg к определенному аудиоканалу?

Я изо всех сил пытаюсь найти способ нормализовать определенный аудиоканал в видеофайле с помощью ffmpeg (я открыт для других предложений). У меня есть 20 или более видеофайлов со звуковыми дорожками 5.1. Я предпочитаю нормализовать только канал FC этой звуковой дорожки. Обычно я использую Audacity, чтобы сделать это вручную, а затем использую MKVToolNix, чтобы заменить исходный звук нормализованным. Это все хорошо, но когда у меня сотни видео, это уже слишком. Я попробовал фильтр громкой нормы ffmped, и он делает свою работу, но нормализует все аудиоканалы, что превосходит цель. Есть ли способ сделать это автоматически в пакетном режиме?

1 ответ

      ffmpeg -i input -filter_complex "[0:a:0]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FC]loudnorm,aformat=sample_rates=44100:channel_layouts=mono[FC2];[FL]aformat=channel_layouts=mono[FL2];[FR]aformat=channel_layouts=mono[FR2];[LFE]aformat=channel_layouts=mono[LFE2];[BL]aformat=channel_layouts=mono[BL2];[BR]aformat=channel_layouts=mono[BR2];[FL2][FR2][FC2][LFE2][BL2][BR2]join=inputs=6:channel_layout=5.1" -c:v copy output
  1. Извлеките каналы с помощью ChannelSplit .
  2. Используйте громкостьнорм .
  3. Сбросьте частоту дискретизации с помощью aresample или (loudnorm делает ее 192000 Гц).
  4. Установите каждый канал как моно (необходим для фильтра соединения) с помощью aformataformat .
  5. Присоединяйтесь ко всем каналам с помощью join.
  6. Потоковое копирование видео.

Также см. FFmpeg Wiki: Аудиоканалы .

Другие вопросы по тегам