2013-10-03 113 views
1
NAudio.Wave.WaveChannel32 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName));   
byte[] mainBuffer = new byte[wave.Length];    
wave.Read(mainBuffer, 0, mainBuffer.Length); 

我想使用NAudio和ZedGraph進行一些計算並繪製wav文件的波形。但是,如果文件太大(大於100兆字節)wave.Read(mainBuffer, 0, mainBuffer.Length);會拋出內存異常。我該如何解決這個問題?請誰能幫助我?C#NAudio內存異常處理大文件時出現異常

我改變了我的代碼,我會盡快寫在這裏。

+0

以下是NAudio Source http://naudio.codeplex.com/documentation的鏈接。您可以從那裏找到解決方案或向他們詢問。 – Dilshod

+0

發生這種情況後,程序運行一段時間後,地址空間中的100兆空洞會變得非常棘手。您不希望繪製100 MB音頻數據,只能讀取您可以合理顯示的內容。或者將您的EXE項目上的Platform目標設置更改爲AnyCPU。 –

+0

音頻編輯軟件如何處理這樣的問題?如果我拿出一半的數據,我看不到合理的波形。 :/ – Blast

回答

0

我建議不要一次讀取整個文件。每次讀取幾秒鐘,計算波形圖的峯值,然後移動到接下來的幾秒鐘。

+0

我應該使用BeginRead方法來做到這一點,或者你建議循環? – Blast

+0

循環。如果你正在繪製波形圖,那麼每秒最多的音頻可能只有幾個像素,所以讀一下,計算峯值,然後讀取下一秒鐘等等 –