2017-09-23 5 views
0

오디오 스트림을 IMA ADPCM으로 인코딩하려고합니다. 여기에 제 코드가 있습니다.NAdio ImaAdpcm 입력 재 샘플링 AcmNotPossible 오류

public Byte[] EncodeDVI(Byte[] source) 
     { 
      var resampleStream = new AcmStream(new WaveFormat(11025, 16, 1), new ImaAdpcmWaveFormat(11025, 16, 1)); 
      Buffer.BlockCopy(source, 0, resampleStream.SourceBuffer, 0, source.Length); 

      int sourceBytesConverted = 0; 
      var convertedBytes = resampleStream.Convert(source.Length, out sourceBytesConverted); 
      if (sourceBytesConverted != source.Length) 
      { 
       Console.WriteLine("We didn't convert everything {0} bytes in, {1} bytes converted"); 
      } 

      var converted = new byte[convertedBytes]; 
      Buffer.BlockCopy(resampleStream.DestBuffer, 0, converted, 0, convertedBytes); 

      return converted; 
     } 

나는이 오류가있어 코드를 실행할 때마다 "NAudio.MmException을 'acmStreamOpen 호출 AcmNotPossible'"

답변

0

ACM 코덱은 그들 만이 수행 할 수있는 변환의 제한된 수있다. NAudio 데모 응용 프로그램을 사용하여 시스템에 설치되어있는 ACM 코덱과 그들이 변환 할 수있는 내용을 더 자세히 탐색 할 수 있습니다.

이 경우에는 지원되지 않는 샘플 속도 일 수 있습니다. 필자는 형식 변환에 대한보다 자세한 지침을 작성했습니다. here은 때로는 몇 단계로 변환해야하는 경우를 설명합니다.

+0

IMA Adpcm을 인코딩하기 위해 NAudio 데모 프로젝트를 사용해 보았으며 사용 가능한 유일한 옵션은 11025 Khz, 4 비트 모노입니다. 내 파일은 11025,16 비트 모노입니다. 그래서, 내가 무엇을 필요로하지 않습니다, 그리고 내가 여기서 언급 한 것과 같은 방식으로 작동 wdlResample 예제를 찾을 수 없습니다, 당신은 하나를 가리켜 주시겠습니까? –