CaptureSharedTimerDriven

이 샘플 애플리케이션은 Core Audio API를 사용하여 사용자가 지정한 입력 디바이스에서 오디오 데이터를 캡처하고 현재 디렉터리의 고유하게 명명된 .wav 파일에 씁니다. 이 샘플에서는 타이머 기반 버퍼링을 보여 줍니다.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

설명

이 샘플에서는 다음 기능을 보여 줍니다.

  • 멀티미디어 디바이스 열거 및 선택용 MMDevice API.
  • 스트림 관리 작업을 위한 WASAPI입니다.

요구 사항

제품 버전
Windows SDK Windows 7
Visual Studio 2008

 

샘플 다운로드

이 샘플은 다음 위치에서 사용할 수 있습니다.

위치 Path/URL
Windows SDK \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedTimerDriven\...

 

예제 빌드

CaptureSharedTimerDriven 샘플을 빌드하려면 다음 단계를 사용합니다.

  1. Windows SDK용 CMD 셸을 열고 CaptureSharedTimerDriven 샘플 디렉터리로 변경합니다.
  2. CaptureSharedTimerDriven 디렉터리에서 명령을 start WASAPICaptureSharedTimerDriven.sln 실행하여 Visual Studio 창에서 WASAPICaptureSharedTimerDriven 프로젝트를 엽니다.
  3. 창 내에서 디버그 또는 릴리스 솔루션 구성을 선택하고 메뉴 모음에서 빌드 메뉴를 선택하고 빌드 옵션을 선택합니다. SDK용 CMD 셸에서 Visual Studio를 열지 않으면 Visual Studio는 SDK 빌드 환경에 액세스할 수 없습니다. 이 경우 프로젝트 파일 WASAPICaptureSharedTimerDriven.vcproj에 사용되는 환경 변수 MSSdk를 명시적으로 설정하지 않으면 샘플이 빌드되지 않습니다.

샘플 실행

데모 애플리케이션을 성공적으로 빌드하면 실행 파일 WASAPICaptureSharedTimerDriven.exe 생성됩니다. 실행하려면 명령 창에 를 입력한 다음 필수 또는 선택적 인수를 입력 WASAPICaptureSharedTimerDriven 합니다. 다음 예제에서는 기본 멀티미디어 디바이스에서 캡처 기간을 지정하여 샘플을 실행하는 방법을 보여줍니다.

WASAPICaptureSharedTimerDriven.exe -d 20 -multimedia

다음 표에는 인수가 표시됩니다.

인수 설명
-? 도움말을 표시합니다.
-H 도움말을 표시합니다.
-l 오디오 캡처 대기 시간(밀리초)입니다.
-d 오디오 캡처 기간(초)입니다.
-M MMCSS 사용을 사용하지 않도록 설정합니다.
-콘솔 기본 콘솔 디바이스를 사용합니다.
-통신 기본 통신 디바이스를 사용합니다.
-멀티미디어 기본 멀티미디어 디바이스를 사용합니다.
-끝점 스위치 값에 지정된 엔드포인트 식별자를 사용합니다.

 

애플리케이션이 인수 없이 실행되는 경우 사용 가능한 디바이스를 열거하고 사용자에게 캡처 세션에 대한 디바이스를 선택하라는 메시지를 표시합니다. 기본 콘솔, 통신 및 멀티미디어 디바이스가 나열되고 디바이스 및 엔드포인트 식별자가 나열됩니다. 기간을 지정하지 않으면 지정된 디바이스의 오디오 스트림이 10초 동안 캡처됩니다. 애플리케이션은 캡처된 데이터를 고유하게 명명된 .wav 파일에 씁니다.

CaptureSharedTimerDriven은 타이머 기반 버퍼링을 보여 줍니다. 이 모드에서 클라이언트는 일정 기간(-d 스위치 값으로 지정된 대기 시간의 절반(밀리초)을 기다려야 합니다. 클라이언트가 절전 모드에서 해제되면 처리 기간의 절반 정도가 되면 엔진에서 다음 샘플 집합을 가져옵니다. 버퍼링 루프에서 각 처리가 통과하기 전에 클라이언트는 데이터가 캡처 버퍼를 오버런하지 않도록 사용 가능한 캡처 데이터의 양을 찾아야 합니다. 지정된 디바이스에서 캡처된 오디오 데이터는 이벤트 기반 버퍼링을 사용하도록 설정하여 처리할 수 있습니다. 이 모드는 CaptureSharedEventDriven 샘플에서 설명합니다.

핵심 오디오 API를 사용하는 SDK 샘플