1

TL; DR пример loudnorm 2pass в одной строке с использованием ffpmpeg (ffmpeg-normalize - это один поток / процесс, и я не могу объединить с ним другие параметры ffmpeg)

Не так много примеров использования loudnorm, так как он относительно новый для ffmpeg, я использую ffmpeg около 10 лет. Я новичок в Loudnorm однако

Я прочел:

http://k.ylo.ph/2016/04/04/loudnorm.html

Как я могу нормализовать звук с помощью ffmpeg?

которые полезны Однако я пытаюсь объединить несколько записей ffmpeg в 1. использование библиотеки ffmpeg-normalize (python) также ограничивает вас одним потоком / процессом. что медленно

для 2 прохода ffmpeg x264 вы можете просто сделать:

ffmpeg -y -i $FILE -c:v libx264 -b:v 4000k -pass 1 -c:a aac -b:a 256k -f mkv /dev/null && \
ffmpeg -i $FILE -c:v libx264 -b:v 4000k -pass 2 -c:a aac -b:a 256k $FILE.mkv

кажется, не существует для Loudnorm, хотя. Я не вижу способа сделать это с одним и двумя проходами?

в настоящее время я кодирую видео, затем нормализую звук и, наконец, удаляю метаданные и данные глав из файлов, если они существуют (независимо от того, существует ли он или нет)

это создает 3 одноразовых файла (включая оригинал)

возможность выполнения loudnorm в одной строке помогла бы мне добавить к нему другие вещи, а также возможно ли одновременно выполнить 2pass x264 и 2pass loudnorm? как в случае, если он обрабатывает два, а затем объединить их во втором проходе.

Если возможно, я хотел бы привести примеры, а не ссылки на вещи. Я могу гуглить ссылки самостоятельно и уже несколько недель. Спасибо

1 ответ1

2

Невозможно автоматически запустить двухпроходный фильтр громкоговорителей с помощью всего лишь ffmpeg, но вы можете использовать программу ffmpeg-normalize чтобы сделать это за вас. Я знаю, что вы упомянули об этом, но если вы хотите кодировать видео одновременно - особенно с двумя проходами - вам, однако, придется работать с одним промежуточным файлом, то есть:

  • Первый запуск: ffmpeg-normalize для исходного видео, копирование исходного видеопотока.
  • Второй запуск: x264-кодирование (многопоточное) нормализованного аудиофайла или видеопотоков исходного файла.

То, чего вы хотите достичь, просто не может быть сделано одним ffmpeg. Вам нужно запрограммировать собственное решение, особенно если вы хотите обрабатывать несколько файлов параллельно. Это, безусловно, ускорит процесс, даже если один прогон ffmpeg использует только один поток.

В качестве отправной точки, в репозитории FFmpeg также есть более простой скрипт на Ruby . Он выполняет два прохода громкоговорителя, читая статистику первого запуска. Вы можете изменить его, чтобы дополнительно запустить двухпроходную кодировку x264 с многопоточностью, то есть выполнить первый проход x264 при первом запуске, второй при втором запуске:

Первый проход:

ffmpeg -y -i $FILE -c:v libx264 -b:v 4000k -pass 1 -filter:a loudnorm=print_format=json -f mkv /dev/null

Считайте статистику JSON из вывода loudnorm (например, с помощью анализатора JSON Python или любого другого инструмента, такого как grep или awk), затем выполните второй проход:

ffmpeg -i $FILE -c:v libx264 -b:v 4000k -pass 2 -filter:a loudnorm=linear=true:measured_I=$input_i:measured_LRA=$input_lra:measured_tp=$input_tp:measured_thresh=$input_thresh -c:a aac -b:a 256k $FILE.mkv

Где $input_i , $input_lra , $input_tp , $input_thresh - это значения, считанные с первого прохода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .