Я довольно новичок в WASAPI, и я пытаюсь написать программу на C++, которая смотрит на аудиопоток на основном устройстве воспроизведения и выполняет FFT на каждом фрагменте через fftw3, что-то делает с результатом и отбрасывает кусок. Каждый пример, который я смог найти на WASAPI и fftw3, включает запись в файл и открытие этого файла. Можно ли обрабатывать куски WAVE напрямую?Как я могу обрабатывать фрагменты звуковых данных из потока WASAPI, не записывая их в файл?
0
A
ответ
0
Звуковой захват WASAPI обычно заполняет буферы памяти «только что записанными» аудиоданными и передает их обратно в управляющее приложение. «Без записи в файл» - так оно и работает на первом месте. Это требует дополнительных усилий для записи данных в мультимедийный файл с сжатием или без него.
Вы можете быть заинтересованы в следующих Windows SDK samples:
- CaptureSharedEventDriven - Данное приложение использует Core Audio API, чтобы захватить аудио данные с устройства ввода, заданные пользователем, и записывает его в уникальное имя. WAV в текущем каталоге. Этот пример демонстрирует буферизацию, управляемую событиями.
- CaptureSharedTimerDriven - это пример приложения использует API-интерфейсы Core Audio для захвата аудиоданных с устройства ввода, указанного пользователем, и записывает его в файл с уникальным именем .WAV в текущем каталоге. Этот пример демонстрирует буферизацию с таймером.
Оба показывают, как данные перемещаются из API через буферы памяти, в файлы. Вы можете применять БПФ в момент, когда у вас есть данные, полученные от API, прежде чем они попадут в файлы в образцах.
Похоже, что ваш вопрос связан с FFTW, и не имеет никакого отношения к WASAPI? –
Я предполагаю, что это больше того, что мне интересно, как WASAPI возвращает фрагменты RIFF и что мне нужно знать для их обработки. – user2977512