CaptureSharedEventDriven
В этом примере приложения используются API Core Audio для записи звуковых данных с входного устройства, указанного пользователем, и записывает его в файл с уникальным именем .wav в текущем каталоге. В этом примере демонстрируется буферизация на основе событий.
Эта тема описана в следующих разделах.
Description
В этом примере показаны следующие функции.
- API MMDevice для перечисления и выбора мультимедийных устройств.
- WASAPI для операций управления потоками, таких как запуск и остановка потока, а также переключение потоков.
Требования
Продукт | Версия |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
Скачивание примера
Этот пример доступен в следующих расположениях.
Расположение | Путь или URL-адрес |
---|---|
Пакет Windows SDK | \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\... |
Построение образца
Чтобы создать пример CaptureSharedEventDriven, выполните следующие действия.
- Откройте оболочку CMD для пакета SDK для Windows и перейдите в пример каталога CaptureSharedEventDriven.
- Выполните команду
start WASAPICaptureSharedEventDriven.sln
в каталоге CaptureSharedEventDriven, чтобы открыть проект WASAPICaptureSharedEventDriven в окне Visual Studio. - В окне выберите конфигурацию решения отладки или выпуска, выберите меню "Сборка" в строке меню и выберите параметр "Сборка". Если вы не открываете Visual Studio из оболочки CMD для пакета SDK, Visual Studio не будет иметь доступа к среде сборки пакета SDK. В этом случае пример не будет создаваться, если вы явно не задали переменную среды MSSdk, которая используется в файле проекта, WASAPICaptureSharedEventDriven.vcproj.
Запуск примера
При успешном создании демонстрационного приложения создается исполняемый файл, WASAPICaptureSharedEventDriven.exe. Чтобы запустить его, введите WASAPICaptureSharedEventDriven
в командном окне, за которым следует обязательные или необязательные аргументы. В следующем примере показано, как запустить пример, указав длительность записи на мультимедийном устройстве по умолчанию.
WASAPICaptureSharedEventDriven.exe -d 20 -multimedia
В следующей таблице показаны аргументы.
Аргумент | Description |
---|---|
-? | Отображает справку. |
-h | Отображает справку. |
-l | Задержка записи звука в миллисекундах. |
-d | Длительность записи звука в секундах. |
-m | Отключает использование MMCSS. |
-Консоли | Используйте консольное устройство по умолчанию. |
-Коммуникаций | Используйте устройство связи по умолчанию. |
-Мультимедиа | Используйте мультимедийное устройство по умолчанию. |
-Конечной точки | Используйте идентификатор конечной точки, указанный в значении коммутатора. |
Если приложение выполняется без аргументов, оно перечисляет доступные устройства и предложит пользователю выбрать устройство для сеанса записи. За консолью, связью и мультимедийными устройствами по умолчанию указываются устройства и идентификаторы конечных точек. Если длительность не указана, аудиопоток из указанного устройства фиксируется в течение 10 секунд. Приложение записывает захваченные данные в файл с уникальным именем .wav.
CaptureSharedEventDriven демонстрирует буферизацию на основе событий. Экземпляр звукового клиента для этого примера настроен на выполнение в общем режиме, а обработка звукового буфера клиента выполняется путем установки флага AUDCLNT_STREAMFLAGS_EVENTCALLBACK в вызове IAudioClient::Initialize. В примере показано, как клиент должен предоставить дескриптор событий системе, вызвав метод IAudioClient::SetEventHandle. После начала сеанса записи и запуска потока звуковой подсистемы сигнализирует предоставленному дескриптору событий уведомлять клиента каждый раз, когда буфер становится готов к обработке клиента. Звуковые данные также можно обрабатывать в цикле на основе таймера. Этот режим демонстрируется в примере CaptureSharedTimerDriven .
См. также