다음을 통해 공유


CaptureSharedTimerDriven

이 샘플 애플리케이션은 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\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 샘플