Skip to main content.

Monday, May 21, 2007

DirectShowオーディオキャプチャでのWavファイル出力(その1)

DirectShowでのオーディオキャプチャプログラミングのサンプルです。オーディオ入力から音声をキャプチャしてWavファイルに出力します。オーディオ入力はいろいろ出来るかと思いますが、今回はマイクからの入力でその音声をWavファイルに出力してみました。DirectShowの開発環境に関しては、こちら等を参照して下さい。

まずは、今回利用するDirectShowフィルタのWavDestについてです。このWavDestフィルタは入力としてオーディオ ストリームを1つ受け取って、WAVファイルにオーディオストリームを書き込むというフィルタです。このフィルタはDirectShowのサンプルプログラムとして提供されているものです。PlatformSDKのディレクトリの(platformSDKディレクトリ)?Samples?Multimedia?DirectShow?Filters?WavDestにあります。コンパイルして、regsvr32.exeでレジストリに登録してから利用可能となります。こちらにコンパイルしたWavDest.axと登録(reg.bat)、登録解除(unreg.bat)のbatファイルを置いておきます。(※御利用の場合は自己責任でお願いします。)WavDest.axが登録出来ると、以下のようにGraphEditツールでも利用可能となります。GraphEditのメニュー → Insert Filters → DirectShow Filters の一覧で確認出来ます。

WavDestフィルタ


次にフィルタの準備が出来たので、GpaphEditでフィルタを接続して今回のプログラムの機能の確認をします。私のPCでは以下のようなグラフになりました。
GraphEditでのグラフ


左からオーディオキャプチャフィルタ、WavDestフィルタ、FileWriterフィルタとなります。FileWriterにはvoice.wavというファイル名を設定しています。オーディオキャプチャフィルタはGraphEditのメニュー → Insert Filters → DirectShow Filters → Audio Capture Sources で追加出来ます。以下は私のPCでの画面です。

オーディオキャプチャフィルタ


これでマイクを接続して、グラフを開始するとマイクからの音声がwavファイルに出力されます。

次回でこのグラフの機能をプログラミングします。

参考サイト
WavDest フィルタ サンプル

Windowsプログラミング関連記事