2013-06-01 92 views
0

我正在尋找如何使用Naudio + WASAPI捕獲麥克風音頻的示例代碼。使用Naudio + WASAPI捕獲麥克風音頻?

(我是直接到磁盤記錄不感興趣,我需要的是對實時處理的輸入緩衝區,以做一些音頻效果。)

我搜索了很多,但找不到任何體面的在線樣本。

你能幫忙嗎?

P.S. BASS庫和C#示例也很受歡迎!

回答

3

NAudio source code附帶演示應用程序,演示如何使用WASAPI捕獲音頻。看看NAudioDemo\RecordingDemo\RecordingPanel.cs

+0

感謝您的回答。我已經看到了這個例子,但似乎緩衝區大小不斷變化(7000-8000字節)。 有沒有辦法修改這段代碼來使緩衝區大小一致? – AudioMaster

+1

我認爲這是WASAPI的實施方式。如果你需要恆定的大小,你可以自行將緩衝區分成塊。 –

0

MSDN有很多代碼示例,雖然不覆蓋NAudio,但他們確實有幾個示例詳細顯示瞭如何使用Windows音頻會話API。

由於WASAPI是純API本身,因此兩個示例項目都向您展示瞭如何從純本機應用程序Here使用該API以及向您展示如何構建包裝API的本地組件的示例來自CSharp應用程序的消耗。我找不到C#/ C++ - 樣本的直接鏈接,但它包含在Windows 8 App Samples包中。然後可以選擇爲API編寫託管包裝,但除非您喜歡痛苦,並且正在尋找編組中的冒險,我不會推薦它......

如果您正在爲Windows Phone開發,那麼有一個VOIP-WP8 SDK中的示例,介紹如何使用WASAPI捕獲和呈現PCM音頻數據。

正如Mark指出的那樣,pcm數據緩衝區的大小可能會隨着時間而有所不同,這部分是由於WASAPI是低延遲音頻API,因此消費者(您的應用程序)和生產者(司機)儘可能。雖然沒有什麼能夠阻止您對自己的緩衝區進行一些修復,並且只在您自己的緩衝區已滿時將數據傳遞到應用程序。