2017-09-23 5 views
0

J'essaye d'encoder le flux audio dans IMA ADPCM, voici mon code.NAdio ImaAdpcm entrée re sampling AcmNotPossible erreur

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; 
     } 

Chaque fois que je lance le code que je suis cette erreur « NAudio.MmException: « AcmNotPossible appeler acmStreamOpen » »

Répondre

0

codecs ACM ont seulement un nombre limité de conversions qu'ils sont en mesure d'effectuer. Vous pouvez utiliser l'application de démonstration NAudio pour explorer plus en détail les codecs ACM installés sur votre système et ce qu'ils peuvent convertir.

Je suppose que dans ce cas, il se peut que votre fréquence d'échantillonnage ne soit pas prise en charge. J'ai écrit un guide plus détaillé sur la conversion de format here, qui explique comment vous avez parfois besoin de faire votre conversion en quelques étapes.

+0

J'ai essayé le projet de démo NAudio pour encoder IMA Adpcm, et la seule option disponible est 11025 Khz, 4bit Mono. et mon fichier est 11025,16 bit Mono. Donc, ce n'est pas ce dont j'ai besoin, et je ne trouve pas d'exemple wdlResample qui fonctionne de la même manière que celui que j'ai mentionné ici, pouvez-vous m'en indiquer un? –