Я новичок в WASAPI, и я пытаюсь написать программу на C++, которая просматривает аудиопоток на основном воспроизводящем устройстве и выполняет БПФ для каждого фрагмента через fftw3, что-то делает с результатом и отбрасывает фрагмент . Каждый пример, который мне удалось найти на WASAPI и fftw3, включает в себя запись в файл и последующее открытие этого файла. Можно ли обрабатывать фрагменты WAVE напрямую?
Как я могу обрабатывать фрагменты звуковых данных из потока WASAPI, не записывая их в файл?
comment
Похоже, ваш вопрос касается FFTW и ничего общего с WASAPI?
- person Cory Nelson   schedule 11.11.2013
comment
Думаю, мне интересно, как WASAPI возвращает фрагменты RIFF и что мне нужно знать для их обработки.
- person user2977512   schedule 11.11.2013
Ответы (1)
Захват аудио WASAPI обычно заполняет буферы памяти «только что захваченными» аудиоданными и передает их обратно управляющему приложению. "Без записи в файл" - так оно и работает в первую очередь. Требуются дополнительные усилия для записи данных в медиафайл со сжатием или без него.
Вам могут быть интересны следующие Примеры Windows SDK:
- CaptureSharedEventDriven — этот образец приложения использует API-интерфейсы Core Audio для захвата аудиоданных с устройства ввода, указанного пользователем, и записи их в WAV-файл с уникальным именем в текущем каталоге. В этом образце демонстрируется буферизация, управляемая событиями.
- CaptureSharedTimerDriven — этот пример приложения использует API-интерфейсы Core Audio для захвата аудиоданных с устройства ввода, указанного пользователем, и записи их в WAV-файл с уникальным именем в текущем каталоге. В этом образце демонстрируется буферизация, управляемая таймером.
Оба показывают, как данные передаются из API через буферы памяти в файлы. Вы можете применить БПФ в тот момент, когда у вас есть данные, полученные из API, до того, как они попадут в файлы в примерах.
person
Roman R.
schedule
06.01.2014