NAdio ImaAdpcm входная повторная выборка AcmNotPossible error

Я пытаюсь закодировать аудио поток в ADACM IMA, вот мой код.

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 вызывает acmStreamOpen'"

1 ответ

Кодеки ACM имеют только ограниченное количество преобразований, которые они могут выполнить. Вы можете использовать демонстрационное приложение NAudio для более детального изучения того, какие кодеки ACM установлены в вашей системе и что они могут преобразовывать.

Я подозреваю, что в этом случае это может быть ваша частота дискретизации, которая не поддерживается. Я написал более подробное руководство по конвертации форматов, которое объясняет, как вам иногда нужно выполнить конвертацию в несколько этапов.

Другие вопросы по тегам