2013-11-11 1 views
0

Я довольно новичок в WASAPI, и я пытаюсь написать программу на C++, которая смотрит на аудиопоток на основном устройстве воспроизведения и выполняет FFT на каждом фрагменте через fftw3, что-то делает с результатом и отбрасывает кусок. Каждый пример, который я смог найти на WASAPI и fftw3, включает запись в файл и открытие этого файла. Можно ли обрабатывать куски WAVE напрямую?Как я могу обрабатывать фрагменты звуковых данных из потока WASAPI, не записывая их в файл?

+1

Похоже, что ваш вопрос связан с FFTW, и не имеет никакого отношения к WASAPI? –

+0

Я предполагаю, что это больше того, что мне интересно, как WASAPI возвращает фрагменты RIFF и что мне нужно знать для их обработки. – user2977512

ответ

0

Звуковой захват WASAPI обычно заполняет буферы памяти «только что записанными» аудиоданными и передает их обратно в управляющее приложение. «Без записи в файл» - так оно и работает на первом месте. Это требует дополнительных усилий для записи данных в мультимедийный файл с сжатием или без него.

Вы можете быть заинтересованы в следующих Windows SDK samples:

  • CaptureSharedEventDriven - Данное приложение использует Core Audio API, чтобы захватить аудио данные с устройства ввода, заданные пользователем, и записывает его в уникальное имя. WAV в текущем каталоге. Этот пример демонстрирует буферизацию, управляемую событиями.
  • CaptureSharedTimerDriven - это пример приложения использует API-интерфейсы Core Audio для захвата аудиоданных с устройства ввода, указанного пользователем, и записывает его в файл с уникальным именем .WAV в текущем каталоге. Этот пример демонстрирует буферизацию с таймером.

Оба показывают, как данные перемещаются из API через буферы памяти, в файлы. Вы можете применять БПФ в момент, когда у вас есть данные, полученные от API, прежде чем они попадут в файлы в образцах.

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