CaptureSharedEventDriven
このサンプル アプリケーションでは、コア オーディオ 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 サンプルを する