2011-08-26 69 views
0

我使用CLEye驅動程序,使用PS3Eye相機錄製NAudio。 相機有一個4個麥克風陣列,並向系統提供4個音頻通道。在NAudio中錄製時減少通道數量

默認情況下,所有通道都由NAudio錄製。我正在錄製PCM波形,並獲得4聲道WAV輸出文件。

當我嘗試播放NAudio中的文件時,我收到一個調用acmFormatSuggest的MmException'NoDriver'。立體聲文件播放良好。

我的聲卡只能輸出2個通道,這看起來會導致錯誤。將我的Windows音頻設置設置爲Quadraphonic不能解決此問題。

也許我可以要求NAudio只錄制2個頻道,或者在某處實施我自己的WaveStream?

有沒有人有任何想法在NAudio中下采樣通道的數量? (最好在記錄時間)。十分感謝!

+0

這似乎與我所需要的[鏈接](http://stackoverflow.com/questions/6962312/how-to-use-naudio-to-join-3-wav-files-into-single-文件與-3-通道式-C)。 –

+0

所以我做了一個繼承自WaveStream的類,並根據來自StereoToMonoProvider16的代碼執行下采樣。沒有工作,只需要弄清楚如何正確實施(我的播放/停止控制現在被打破,自動播放,沒有聲音出來,但位置報告正確) –

回答

0

是不是像在WaveFormat中聲明一樣簡單? 12000是採樣率,「1」是通道數量。

waveInStream = new WaveIn(WaveCallbackInfo.FunctionCallback()); 
waveInStream.WaveFormat = new WaveFormat(12000, 1); 
waveInStream.DeviceNumber = 2; 

AudioWriter = new WaveFileWriter("c:\\MyAudio.wav", waveInStream.WaveFormat); 
waveInStream.DataAvailable += waveInStream_DataAvailable; 
waveInStream.StartRecording(); 

這就是它是如何設置我的代碼爲基礎的網絡攝像頭記錄器和立體聲麥克風輸出單聲道WAV文件。

+0

結果在StartRecording()的例外,但我' m使用WasapiCapture,WasapiCapture中發生異常 –

+0

如果我使用WaveIn而不是WasapiCapture,那麼無論如何我都可以得到1個通道,這對於四聲道麥克風來說非常有用! –