Воспроизведение аудио IMA ADPCM с помощью NAudio

#c# #visual-studio #naudio #adpcm

#c# #visual-studio #naudio #adpcm

Вопрос:

У меня есть файл без заголовка с сохраненными необработанными данными IMA ADPCM, я хотел бы воспроизвести его с помощью NAudio. В Audacity использование этой конфигурации воспроизводится без проблем:

 Encoding: VOX ADPCM 
Byte order: No Endianness
Channels: 1 Channel (Mono)
Start offset: 0 bytes
Amount to import: 100%
Sample rate: 22050Hz
 

Это код, который я использую, но я всегда получаю систему.Ошибка исключения DivideByZeroException.

 internal void PlayIMAAudio(WaveOut AudioPlayer, byte[] IMAData, int Frequency, int Bits, int Channels)
{
    if (AudioPlayer.PlaybackState == PlaybackState.Stopped)
    {
        MemoryStream AudioSample = new MemoryStream(IMAData);
        ImaAdpcmWaveFormat FileFormat = new ImaAdpcmWaveFormat(Frequency, Channels, Bits);
        RawSourceWaveStream provider = new RawSourceWaveStream(AudioSample, FileFormat);
        AudioPlayer.Init(provider);
        AudioPlayer.Play();
    }
}
 

Как я мог это исправить?

Спасибо!

Ответ №1:

Обычно вы не можете воспроизводить сжатые форматы напрямую. Передайте RawSourceWaveStream into WaveFormatConversionStream.CreatePcmStream , чтобы перейти к PCM. Это должно сработать, если на вашем ПК доступен правильный кодек и если вы правильно указали исходный формат сигнала