2012-03-02 4 views
0

NAudioを使用してmicrphoneから録音し、そのデータをMemoryStreamに保存しようとしています。明白な方法ではないようで、私がBufferedWaveProviderから読み込もうとするたびに、WaveOut.Playを使用しても録音は再生されません。私の読み込み試行を取り除くと、録音は正常に再生されます。 MemoryStreamに記録する方法はありますか?NAudioを使用してMemoryStreamに録音する

これは私がMemoryStreamをに変換しようとしてきた方法です:

Byte[] stream = new byte[bwp.BufferedBytes]; 
bwp.Read(stream, 0, bwp.BufferedBytes); 
wo.Play(); //plays fine only if I comment out the Read line above 
MemoryStream ms = new MemoryStream(stream); 
+0

bwpがどのように使用されているか、または定義されているかを示してください。 – MethodMan

+0

使用しているNAudioのバージョンは? http://opensebj.blogspot.com/2009/04/naudio-tutorial-5-recording-audio.htmlでご覧いただけます。 – MethodMan

答えて

0

あなたはあなたが何をするためにあなたを助けるためにダウンロードすることができ、ソースコードと一緒にコードプロジェクトのリンクアウトがあります試してみる。私は、待ち時間がいかに低いかわからない
http://www.codeproject.com/KB/cs/Streaming_wave_audio.aspx

これをやってCodeProjectの上の例のプロジェクトがあります。

私はコーデックとしてSpeex(少なくともスピーチ用)をお勧めします。無料でオープンソースであり、待ち時間が少なく、帯域幅が狭いです。

1

WaveProviderは、そのReadメソッドのコンシューマを1つしか持てません。その時点でBufferedWaveProviderにバイトを追加すると、それらをあなたのメモリストリームに追加することをお勧めします。代わりにIWaveProviderを継承し、ReadメソッドでBufferedWaveProviderから読み取り、返す前に読み込んだ内容をMemoryStreamに書き込むことです。そのWaveProviderを使用してWaveOutに与えます。

関連する問題