2012-03-02 85 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 2012-03-02 00:20:11

+0

您使用的是哪種版本的NAudio ..?這裏是一個鏈接,你可以看看.. http://opensebj.blogspot.com/2009/04/naudio-tutorial-5-recording-audio.html – MethodMan 2012-03-02 00:24:49

回答

0

沒有與源代碼一起上代碼項目的鏈接的是,你可以下載到幫你做你是什麼試。

在CodeProject上的示例項目這樣做:
http://www.codeproject.com/KB/cs/Streaming_wave_audio.aspx
我不知道等待有多低。

作爲一個編解碼器,我推薦Speex(至少用於演講)。它是免費的,開源的,並提供低延遲和低帶寬。

1

WaveProvider的Read方法只能有一個消費者。我建議在你添加字節到你的BufferedWaveProvider的時候,你也將它們添加到你的內存流中。另一種方法是從IWaveProvider繼承,在Read方法中,從BufferedWaveProvider中讀取並在返回之前將讀入的內容寫入MemoryStream。然後使用WaveProvider發送給WaveOut。