Поделиться через


CaptureSharedEventDriven

В этом примере приложения используются API Core Audio для записи звуковых данных с входного устройства, указанного пользователем, и записывает его в файл с уникальным именем .wav в текущем каталоге. В этом примере демонстрируется буферизация на основе событий.

В этом разделе содержатся следующие разделы.

Описание

В этом примере показаны следующие функции.

  • API MMDevice для перечисления и выбора мультимедийных устройств.
  • WASAPI для операций управления потоками, таких как запуск и остановка потока, а также переключение потоков.

Требования

Продукт Версия
пакета SDK для Windows Windows 7
Visual Studio 2008

 

Скачивание примера

Этот пример доступен в следующих расположениях.

Местоположение Путь или URL-адрес
Windows SDK \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\...

 

Создание примера

Чтобы создать пример CaptureSharedEventDriven, выполните следующие действия.

  1. Откройте оболочку CMD для пакета SDK для Windows и перейдите в пример каталога CaptureSharedEventDriven.
  2. Выполните команду start WASAPICaptureSharedEventDriven.sln в каталоге CaptureSharedEventDriven, чтобы открыть проект WASAPICaptureSharedEventDriven в окне Visual Studio.
  3. В окне выберите конфигурацию решения отладки или выпуска, выберите меню сборки сборки в строке меню и выберите параметр Сборка. Если вы не открываете Visual Studio из оболочки CMD для пакета SDK, Visual Studio не будет иметь доступа к среде сборки пакета SDK. В этом случае пример не будет создаваться, если вы явно не задали переменную среды MSSdk, которая используется в файле проекта, WASAPICaptureSharedEventDriven.vcproj.

Запуск примера

При успешной сборке демонстрационного приложения создается исполняемый файл WASAPICaptureSharedEventDriven.exe. Чтобы запустить его, введите WASAPICaptureSharedEventDriven в командном окне, а затем обязательные или необязательные аргументы. В следующем примере показано, как запустить пример, указав длительность записи на мультимедийном устройстве по умолчанию.

WASAPICaptureSharedEventDriven.exe -d 20 -multimedia

В следующей таблице показаны аргументы.

Аргумент Описание
-? Отображает справку.
-h Отображает справку.
-l Задержка записи звука в миллисекундах.
-d Длительность записи звука в секундах.
-m Отключает использование MMCSS.
-консоль Используйте консольное устройство по умолчанию.
-связь Используйте устройство связи по умолчанию.
-мультимедиа Используйте мультимедийное устройство по умолчанию.
-конечная точка Используйте идентификатор конечной точки, указанный в значении коммутатора.

 

Если приложение выполняется без аргументов, оно перечисляет доступные устройства и предложит пользователю выбрать устройство для сеанса записи. За консолью, связью и мультимедийными устройствами по умолчанию указываются устройства и идентификаторы конечных точек. Если длительность не указана, аудиопоток из указанного устройства фиксируется в течение 10 секунд. Приложение записывает захваченные данные в файл с уникальным именем .wav.

CaptureSharedEventDriven демонстрирует буферизацию на основе событий. Экземпляр звукового клиента, созданного для этого примера, настроен на выполнение в общем режиме, а обработка звукового буфера выполняется путем установки флага AUDCLNT_STREAMFLAGS_EVENTCALLBACK в вызове IAudioClient::Initialize. В примере показано, как клиент должен предоставить дескриптор событий системе, вызвав метод IAudioClient::SetEventHandle. После начала сеанса записи и запуска потока звуковой подсистемы сигнализирует предоставленному дескриптору событий уведомлять клиента каждый раз, когда буфер становится готов к обработке клиента. Звуковые данные также можно обрабатывать в цикле на основе таймера. Этот режим демонстрируется в примере CaptureSharedTimerDriven.

Примеры пакета SDK , использующие основные API аудио