2013-10-03 118 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

循环。如果你正在绘制波形图,那么每秒最多的音频可能只有几个像素,所以读一下,计算峰值,然后读取下一秒钟等等 –