2016-08-23 2 views
0

В формате m4a есть звуковые дорожки разной длины. И есть библиотека ffmpeg для работы со СМИ. Многие из треков в конечном итоге влияют на «распад», и необходимо определить, в какой точке оно происходит (определяется один раз и значение, введенное в базу данных вместе с другой информацией о треке). Те. мы должны как-то определить, что трек начинает исчезать, а его объем достиг 30% по сравнению с общим объемом песни. Можно ли решить с помощью ffmpeg, и если да, то как?Определение момента затухания звука через ffmpeg

ответ

0

Если запустить эту команду,

ffmpeg -i in.mp4 
     -af astats=metadata=1:reset=1, 
      ametadata=print:key=lavfi.astats.Overall.RMS_level:file=vol.log -vn -f null - 

он будет генерировать файл с именем vol.log, который выглядит как этого

frame:8941 pts:9155584 pts_time:190.741 
lavfi.astats.Overall.RMS_level=-79.715762 
frame:8942 pts:9156608 pts_time:190.763 
lavfi.astats.Overall.RMS_level=-83.973798 
frame:8943 pts:9157632 pts_time:190.784 
lavfi.astats.Overall.RMS_level=-90.068668 
frame:8944 pts:9158656 pts_time:190.805 
lavfi.astats.Overall.RMS_level=-97.745197 
frame:8945 pts:9159680 pts_time:190.827 
lavfi.astats.Overall.RMS_level=-125.611266 
frame:8946 pts:9160704 pts_time:190.848 
lavfi.astats.Overall.RMS_level=-inf 
frame:8947 pts:9161728 pts_time:190.869 
lavfi.astats.Overall.RMS_level=-inf 

The pts_time является временной индекс и уровень RMS является средним объемом этот интервал (здесь 21 мс). Каждая капля 6 дБ соответствует капле пополам текущего объема.

Если вы запустите команду с reset=0, последнее чтение в сгенерированном файле журнала покажет громкость RMS для всего файла. Тогда объем, составляющий 30% от среднего объема, составляет ~ 10,5 дБ ниже среднего значения.

Смежные вопросы