2010-02-04 1 views
3

현재 WAVE 파일의 왼쪽 및 오른쪽 채널을 분리하고 헤더를 byte [] 배열에 포함 시켰습니다. 다음 단계는 두 채널을 모두 재생하는 것입니다. 어떻게 할 수 있습니까?C#에서 추출 된 웨이브 파일 바이트 배열을 재생하는 방법은 무엇입니까?

byte[] song_left = new byte[fa.Length]; 
byte[] song_right = new byte[fa.Length]; 

int p = 0; 

for (int c = 0; c < 43; c++) 
{ 
    song_left[p] = header[c]; 
    p++; 
} 

int q = 0; 

for (s = startByte; s < length; s = s + 3) 
{ 
    song_left[s] = sLeft[q]; 
    q++; 
    s++; 
    song_left[s] = sLeft[q]; 
    q++; 
} 

p = 0; 

for (int c = 0; c < 43; c++) 
{ 
    song_right[p] = header[c]; 
    p++; 
} 

이 부분이 바로 광 채널 모두에서 헤더와 데이터를 판독하고 sLeft []와 sRight [] 배열에 저장된다 : 여기

는 코드이다. 이 부분은 완벽하게 작동합니다.

System.IO.File.WriteAllBytes("c:\\left.wav", song_left); 

System.IO.File.WriteAllBytes("c:\\right.wav", song_right); 

추가 저장된 웨이브 파일 재생 버튼 : 내가 바이트 배열을 취득하면

, 나는 다음을했던 내가 플레이 버튼을 누르면 일단

private void button2_Click(object sender, EventArgs e) 
{ 
    spWave = new SoundPlayer("c:\\left.wav"); 
    spWave.Play();   
} 

을,이 오류가 appers :

처리되지 않은 'System.InvalidOperationException'형식의 예외 이 System.dl에서 발생했습니다. l

추가 정보 : 웨이브 헤더가 손상되었습니다.

아이디어가 있으십니까?

+0

어떤 도움을 누구 아래 http://alvas.net/alvas.audio.aspx

코드에서 방법을 AudioCompressionManager.SplitStereo 사용 "웨이브 파일의 왼쪽과 오른쪽 채널이 분리?" –

+0

나는 그것을 해결할 수 있었다 :) –

+1

다른 사람들에게 도움이되는 방법에 대한 설명을 추가한다. – AShelly

답변

0

웨이브 폼 데이터를 재생할 때 codeplex에 라이브러리가 있습니다.

http://files.otac0n.com/ShadySound.zip
(작업을 시작하기 위해 다소 시간이 걸릴 수 있습니다이 링크가, 난 그냥 만들어 :

http://WinMM.codeplex.com

나는 사운드로드와 많이 수행하고 위의 라이브러리를 기반으로 재생하는 프로젝트를 하위 도메인)

플러그인 인프라를 통해 모든 것이로드되기 때문에 몇 가지 프로젝트가 있지만 WAV 파일을로드하는 방법은 보여줍니다.

불행히도 이와 같은 QA 사이트의 질문은 너무 크지 만 여기에 대해 오프라인으로 얘기해 드리겠습니다. 대한

+0

우리는 어떻게 연락 할 수 있습니까? –

+0

이메일. [email protected] –

1

목적

 IntPtr formatMono = AudioCompressionManager.CreateFormat(formatArray); 
     IntPtr formatStereo = IntPtr.Zero; 
     byte[] dataStereo = null; 
     AudioCompressionManager.MergeStereo(formatMono, leftData, rightData, ref formatStereo, ref dataStereo); 
     PlayerEx plex = new PlayerEx(); 
     plex.OpenPlayer(formatStereo); 
     plex.AddData(dataStereo); 
     plex.StartPlay(); 
관련 문제