2013-10-03 1 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 파일의 파형을 그려 봅니다. 그러나 파일이 너무 클 경우 (100MB 이상) wave.Read(mainBuffer, 0, mainBuffer.Length); 메모리 예외가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? Pls 누구든지 나를 도울 수 있습니까?C# NAudio 대용량 파일 작업시 예외 발생

나는 내 코드를 변경 했으므로 최대한 빨리 여기에 쓸 것입니다.

+0

다음은 NAudio Source http://naudio.codeplex.com/documentation에 대한 링크입니다. 거기에서 해결책을 찾거나 질문 할 수 있습니다. – Dilshod

+0

그런데 주소 공간에있는 100 메가 바이트의 구멍은 프로그램이 잠시 동안 실행 된 후에 찾기가 까다로울 수 있습니다. 100MB 상당의 오디오 데이터를 플롯해야하고, 합리적으로 표시 할 수있는 것만 읽을 수 있습니다. 또는 EXE 프로젝트의 플랫폼 대상 설정을 AnyCPU로 변경하십시오. –

+0

오디오 편집기 소프트웨어는 어떻게 이런 문제를 해결할 수 있습니까? 데이터의 절반을 가져 가면 합리적인 파형을 볼 수 없습니다. :/ – Blast

답변

0

전체 파일을 한 번에 읽지 않는 것이 좋습니다. 한 번에 몇 초를 읽고 파형 플롯의 피크 값을 계산 한 후 다음 몇 초로 이동하십시오.

+0

BeginRead 메서드를 사용하여이 작업을 수행하거나 루프를 제안해야합니까? – Blast

+0

루프. 파형을 플로팅하는 경우 오디오 초당 최대 몇 픽셀에 불과하기 때문에 초를 읽고 피크를 계산 한 후 다음 초 등을 읽으십시오 –