Использование ffmpeg и aresample со сверхнизкой частотой дискретизации - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь использовать ffmpeg, чтобы получить данные для генерации списка пиков с разрешением 30 пиков в секунду.

Используемые параметры:

ffmpeg -y -i audio.wav -filter_complex "[0]aresample=30[resampled]" -map [resampled] output_30.wav

который убивает почти всю информацию, и результирующий массив данных содержит только очень маленькие значения. Эта форма сигнала перед повторной дискретизацией enter image description here

по сравнению с повторной дискретизацией до 60 кГц

enter image description here

У меня вопрос, если можно использовать ffmpeg и получать максимумы (пики) за каждый промежуток времени (секунды или 1/20 секунды) звука?

1 Ответ

1 голос
/ 23 марта 2020

Если вы хотите пиковые данные с разрешением 1/20 секунды, используйте это как отправную точку.

ffmpeg -i audio.wav -af "aresample=60000,asetnsamples=3000,astats=reset=1:metadata=1,ametadata=print:key='lavfi.astats.Overall.Peak_level':file=stats.log" -f null -

Идея состоит в том, чтобы использовать достаточно высокую частоту дискретизации, используя aresample, а затем разделить аудио на равные куски, каждый равный 1/20 секунды, используя asetnsamples. Затем astats будет измерять журнал данных по кадрам (сброс = 1). Затем ametadata запишет значение для пикового уровня (в дБ) в текстовый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...