Как записать звук в приложении c ++ UWP с помощью WASAPI? - PullRequest
0 голосов
/ 30 ноября 2018

Я не могу найти учебник в Интернете по моему вопросу.
Все Простое руководство не подходит для UWP.

Например, для использования WASAPI есть следующие шаги

  • перечисление устройств
  • захват аудио
  • воспроизведение (рендеринг) аудио обратно

Но на шаге перечисления клиент должен вызвать CoCreateInstance .Но, насколько я понимаю, эта функция не поддерживается в UWP .Также я потерпел неудачу в строке 30, когда следовал этому коду .

Итак, я пытаюсь понять это, C ++ UWP с использованием WASAPI , но я не могу найти перечислениечасть и этот проект очень сложный для меня.Он включает в себя множество других файлов (DeviceState.h, common.h)
И мне не удалось извлечь код для создания собственного приложения.

У меня вопрос, как я могу записывать звук в приложении c ++ UWPс WASAPI?

Если этот вопрос слишком правдоподобен, я изменю свой вопрос на Как перечислять аудиоустройства в приложении c ++ UWP?.

И причина, почему яИспользуйте WASAPI потому, что я хочу получить доступ к данным, хранящимся в буфере.

Редактировать:
Для перечисления.https://github.com/Microsoft/Windows-universal-samples/blob/7c7832e1f144e4fc836603fd70e1352024a5fe1a/Samples/WindowsAudioSession/cpp/Scenario1.xaml.cpp#L85

1 Ответ

0 голосов
/ 03 декабря 2018

Да, вы можете использовать WASAPI для захвата звука в UWP, и это то, что делается в примере, на который вы ссылались (https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WindowsAudioSession).

Для перечисления основная функция - DeviceInformation::FindAllAsync с помощью этого селектора MediaDevice::GetAudioCaptureSelector он позволит вам составить список устройств захвата.

Для захвата потока основная функция, которую вам нужно, это ActivateAudioInterfaceAsync, она позволит вам создать IAudioClient изидентификатор устройства (определенное устройство) или класс устройства (рендеринг или захват), если вам просто нужно использовать устройство по умолчанию. Получив этот IAudioClient, вы можете использовать его, чтобы получить IAudioClientCapture, в основном то, что вы виделив образце.

...