У меня есть видеозаписи без потерь с видеокассет, некоторые из которых, к сожалению, имеют выходную громкость, ограниченную как отсутствием ползунка громкости на камкордере для чего-либо, кроме встроенного динамика, так и отсутствием настроек громкости на USB-устройстве видеозахвата Dazzle DVC100 (и загадочной невозможностью материализоваться в аудиомикшере Windows или на панели записывающих устройств, несмотря на то, что VirtualDub2 прекрасно его обнаруживает и записывает).
Изначально я использовал это для нормализации звука.
-af loudnorm=I=-16:LRA=11:TP=-1.5
Однако при дальнейшем прочтенииДокументация FFmpegиСтатья в Википедии о нормализации звука, я понимаю, что "нормализация громкости" отличается от "нормализации пиков". Поскольку loudnorm
функция ffmpeg так и называется, мне нужно быть уверенным, что я делаю именно то, что хочу.
Я просто хочу максимально увеличить громкость без обрезанияибез потери динамического диапазона или усреднения уровней громкости по всей записи. Возможно ли это в ffmpeg? Я искал довольно много и, loudnorm
похоже, это настолько популярно, что заглушает все остальное, связанное с нормализацией.
решение1
Сначала можно запустить фильтр volumedetect, чтобы определить пиковый объем. Затем запустить фильтр volume во втором проходе, чтобы добавить равномерное усиление.
Проход 1
ffmpeg -i input -af volumedetect -vn -f null -
Выход:
[Parsed_volumedetect_0 @ 0000022356a12940] n_samples: 495350
[Parsed_volumedetect_0 @ 0000022356a12940] mean_volume: -28.9 dB
[Parsed_volumedetect_0 @ 0000022356a12940] max_volume: -4.2 dB
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_4db: 26
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_5db: 107
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_6db: 182
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_7db: 153
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_8db: 158
Максимальный объем — это ваш пик.
Проход 2
ffmpeg -i input -af volume=+4.2dB -c:v copy output