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


CaptureSharedTimerDriven

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

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

Description

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

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

Требования

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

 

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

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

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

 

Построение образца

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

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

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

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

WASAPICaptureSharedTimerDriven.exe -d 20 -multimedia

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

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

 

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

CaptureSharedTimerDriven демонстрирует буферизацию на основе таймера. В этом режиме клиент должен ждать некоторое время (половина задержки, указанная значением параметра -d в миллисекундах). Когда клиент проснется, на полпути до периода обработки он извлекает следующий набор примеров из подсистемы. Перед каждой передачей обработки в цикле буферизации клиент должен узнать объем доступных данных записи, чтобы данные не перезавернули буфер записи. Звуковые данные, полученные с указанного устройства, можно обрабатывать путем включения буферизации на основе событий. Этот режим показан в примере CaptureSharedEventDriven .

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