CaptureSharedEventDriven
이 샘플 애플리케이션은 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\CaptureSharedEventDriven\... |
예제 빌드
CaptureSharedEventDriven 샘플을 빌드하려면 다음 단계를 사용합니다.
- Windows SDK용 CMD 셸을 열고 CaptureSharedEventDriven 샘플 디렉터리로 변경합니다.
- CaptureSharedEventDriven 디렉터리에서 명령을
start WASAPICaptureSharedEventDriven.sln
실행하여 Visual Studio 창에서 WASAPICaptureSharedEventDriven 프로젝트를 엽니다. - 창 내에서 디버그 또는 릴리스 솔루션 구성을 선택하고 메뉴 모음에서 빌드 메뉴를 선택하고 빌드 옵션을 선택합니다. SDK용 CMD 셸에서 Visual Studio를 열지 않으면 Visual Studio는 SDK 빌드 환경에 액세스할 수 없습니다. 이 경우 프로젝트 파일 WASAPICaptureSharedEventDriven.vcproj에 사용되는 환경 변수 MSSdk를 명시적으로 설정하지 않으면 샘플이 빌드되지 않습니다.
샘플 실행
데모 애플리케이션을 성공적으로 빌드하면 실행 파일 WASAPICaptureSharedEventDriven.exe 생성됩니다. 실행하려면 명령 창에 를 입력한 다음 필수 또는 선택적 인수를 입력 WASAPICaptureSharedEventDriven
합니다. 다음 예제에서는 기본 멀티미디어 디바이스에서 캡처 기간을 지정하여 샘플을 실행하는 방법을 보여줍니다.
WASAPICaptureSharedEventDriven.exe -d 20 -multimedia
다음 표에는 인수가 표시됩니다.
인수 | 설명 |
---|---|
-? | 도움말을 표시합니다. |
-H | 도움말을 표시합니다. |
-l | 오디오 캡처 대기 시간(밀리초)입니다. |
-d | 오디오 캡처 기간(초)입니다. |
-M | MMCSS 사용을 사용하지 않도록 설정합니다. |
-콘솔 | 기본 콘솔 디바이스를 사용합니다. |
-통신 | 기본 통신 디바이스를 사용합니다. |
-멀티미디어 | 기본 멀티미디어 디바이스를 사용합니다. |
-끝점 | 스위치 값에 지정된 엔드포인트 식별자를 사용합니다. |
애플리케이션이 인수 없이 실행되는 경우 사용 가능한 디바이스를 열거하고 사용자에게 캡처 세션에 대한 디바이스를 선택하라는 메시지를 표시합니다. 기본 콘솔, 통신 및 멀티미디어 디바이스가 나열되고 디바이스 및 엔드포인트 식별자가 나열됩니다. 기간을 지정하지 않으면 지정된 디바이스의 오디오 스트림이 10초 동안 캡처됩니다. 애플리케이션은 캡처된 데이터를 고유하게 명명된 .wav 파일에 씁니다.
CaptureSharedEventDriven은 이벤트 기반 버퍼링을 보여 줍니다. 이 샘플에 대해 인스턴스화된 오디오 클라이언트는 공유 모드에서 실행되도록 구성되고 IAudioClient::Initialize 호출에서 AUDCLNT_STREAMFLAGS_EVENTCALLBACK 플래그를 설정하여 클라이언트의 오디오 버퍼 처리가 이벤트를 구동합니다. 이 샘플에서는 IAudioClient::SetEventHandle 메서드를 호출하여 클라이언트가 시스템에 이벤트 핸들을 제공해야 하는 방법을 보여줍니다. 캡처 세션이 시작되고 스트림이 시작된 후 오디오 엔진은 제공된 이벤트 핸들에 클라이언트가 처리할 준비가 될 때마다 클라이언트에 알리도록 신호를 보냅니다. 오디오 데이터는 타이머 기반 루프에서 처리할 수도 있습니다. 이 모드는 CaptureSharedTimerDriven 샘플에서 강등됩니다.
관련 항목