NAdio ImaAdpcm输入重新采样AcmNotPossible错误

时间:2017-09-23 14:29:29

标签: c# naudio adpcm

我正在尝试将音频流编码为IMA ADPCM,这是我的代码。

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:'AcmNotPossible call acmStreamOpen'”

1 个答案:

答案 0 :(得分:0)

ACM编解码器只能进行有限数量的转换。您可以使用NAudio演示应用程序更详细地探索系统上安装的ACM编解码器以及它们之间可以转换的内容。

我怀疑在这种情况下可能是您的采样率不受支持。我已经编写了更详细的格式转换指南here,该指南解释了您有时需要在几个阶段进行转换。