2012-12-29 4 views
1

오디오의 3-4 스트림을 기록하고 wav 파일을 별도로 기록하려고합니다. 나는 NAudio의 asioOut을 사용하여 오디오를 캡처합니다. 처음에는 3 또는 4 채널 wav 파일을 작성했습니다. 그래서 여기에서 질문을 검색하고 내가 answer을 설립했다고 생각했지만, 아직 이해할 수 없습니다. 이제 별도의 wav 파일을 작성할 수 있지만 각 파일에 여러 채널이 있습니다.NAudio에서 여러 개의 wav 파일 작성하기 asioOut

channel_1.wav --------> 채널 1 및 2

channel_2.wav을 갖는다 --------> 채널 1 및 3

channel_3.wav을 갖는다 - -------> 채널 2와 3이 있습니다. GetAsInterleavedSamples()을 구문 분석 할 때 문제가 있다고 생각합니다.

이 내 asioOut_AudioAvailable이다()

void asioOut_AudioAvailable(object sender, AsioAudioAvailableEventArgs e) 
    {  

     float[] samples = new float[2 * 44100 * GetUserSpecifiedChannelCount()]; 

     samples = e.GetAsInterleavedSamples(); 

     int offset = 0; 
     while (offset < samples.Length) 
     { 
      for (int n = 0; n < this.writers.Length; n++) 
      { 
       this.writers[n].WriteSamples(samples, offset, 2); 
       offset += 2; 
      } 
     } 

    } 

나는 그래서 난 그냥 이동으로 배우고이에서 새로운 해요, 어떤 도움을 크게 감상 할 수있다.

감사합니다.

답변

1

정확하게 이해한다면 각 샘플러에 하나의 샘플을 쓰고 싶으므로 WriteSamples의 세 번째 매개 변수는 1이어야하고 오프셋은 1 씩 증가해야합니다. 아마 + = 2를 바이트 배열에서 16 비트 오디오를 처리하는 예제입니다.

관련 문제