CaptureSharedEventDriven
이 샘플 애플리케이션은 Core Audio API를 사용하여 사용자가 지정한 입력 디바이스에서 오디오 데이터를 캡처하고 현재 디렉터리의 고유한 이름의 .wav 파일에 씁니다. 이 샘플에서는 이벤트 기반 버퍼링을 보여 줍니다.
이 항목에는 다음 섹션이 포함되어 있습니다.
묘사
이 샘플에서는 다음 기능을 보여 줍니다.
- 멀티미디어 디바이스 열거 및 선택에 대한 MMDevice API .
- WASAPI는 스트림 시작 및 중지, 스트림 전환과 같은 스트림 관리 작업에 대한.
요구 사항
제품 | 버전 |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
샘플 다운로드
이 샘플은 다음 위치에서 사용할 수 있습니다.
위치 | 경로/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 샘플에서 강등됩니다.
관련 항목
-
핵심 오디오 API 사용하는 SDK 샘플