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 установлены в вашей системе и что они могут преобразовывать.
Я подозреваю, что в этом случае это может быть ваша частота дискретизации, которая не поддерживается. Я написал более подробное руководство по конвертации форматов, которое объясняет, как вам иногда нужно выполнить конвертацию в несколько этапов.