Воспроизведение аудиофайла Dialogic ADPCM с помощью NAUDIO

Я пытаюсь воспроизвести файл Dialogic ADPCM (без заголовка RIFF) с библиотекой NAUDIO. Я пробовал несколько разных вещей, но пока безуспешно. Я попробовал простое преобразование WAV:

        FileStream fs = new FileStream(@"C:\TestFile.vox", FileMode.Open, FileAccess.Read);
        WaveFormat wf = new WaveFormat(8000, 1);
        WaveOut wo = new WaveOut();
        RawSourceWaveStream rawSource = new RawSourceWaveStream(fs, wf);
        wo.Init(rawSource);
        wo.Play();

Это фактически загружает файл и начинает воспроизведение, но он очень шумный и искаженный (фактически не слышимый) почти как неправильный кодек, выбранный для преобразования файла. Я попробовал более конкретное преобразование, потому что кажется, что NAUDIO имеет встроенную поддержку Dialogic ADPCM:

        FileStream fs = new FileStream(@"C:\TestFile.vox", FileMode.Open, FileAccess.Read);
        WaveFormat wf = WaveFormat.CreateCustomFormat(WaveFormatEncoding.DialogicOkiAdpcm, 8000, 1, 3000, 1, 4);
        WaveOut wo = new WaveOut();
        RawSourceWaveStream rawSource = new RawSourceWaveStream(fs, wf);
        wo.Init(rawSource);
        wo.Play();

Это вызывает исключение при вызове WaveOut.Init(). Исключением является "WaveBadFormat вызывая waveOutOpen". Я также пытался использовать

AdpcmWaveFormat wf = new AdpcmWaveFormat(8000, 1);

для моего объекта WaveFormat - я получаю то же исключение. Файл записан с частотой дискретизации 8000 Гц и имеет только 1 канал. Любая помощь в решении этого будет принята с благодарностью. Спасибо

1 ответ

Вам нужно конвертировать в обычный PCM, прежде чем вы сможете играть в нее. использование WaveFormatConversionStream.ConvertToPcm сделать это. Он будет работать только в том случае, если на вашем компьютере установлен кодек ACM, который может распаковать ADPCM, и вам также необходимо передать точно правильную структуру WaveFormat.

Приложение NAudioDemo может показать вам, какие кодеки ACM установлены на вашем компьютере и какие форматы входных и выходных сигналов они поддерживают.

Чтобы узнать больше о преобразовании форматов с помощью NAudio, вы можете прочитать мою статью о CodeProject.

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