简体   繁体   中英

NAdio ImaAdpcm input re sampling AcmNotPossible error

I'm trying to encode audio stream into IMA ADPCM, here is my code.

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

Each time i run the code i got this error "NAudio.MmException: 'AcmNotPossible calling acmStreamOpen'"

ACM codecs only have a limited number of conversions they are able to perform. You can use the NAudio demo application to explore in more detail what ACM codecs are installed on your system and what they can convert between.

I suspect in this case it might be your sample rate that is not supported. I've written a more detailed guide on format conversion here , which explains how you sometimes need to make your conversion in a few stages.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM