Как я могу воспроизвести массив байтов аудио необработанных данных с помощью NAudio?


byte[] bytes = new byte[1024];

Предположим, что bytes - это массив, заполненный звуковыми необработанными данными.

Как я могу воспроизвести этот массив байтов, используя объект WaveOut?

_waveOut.Init(bytes); // <- Error: cannot resolve method.
_waveOut.Play();
2 5

2 ответа:

Я понял это, вот решение:

byte[] bytes = new byte[1024];

IWaveProvider provider = new RawSourceWaveStream(
                         new MemoryStream(bytes), new WaveFormat());

_waveOut.Init(provider);
_waveOut.Play();

Принятый ответ предполагает, что поток байтов составляет 44,1 кГц, 16 бит, стерео. Если у вас есть что-то еще, вы должны предоставить кодировку в WaveFormat

byte[] bytes = new byte[1024];

IWaveProvider provider = new RawSourceWaveStream(
                         new MemoryStream(bytes), new WaveFormat(48000, 16, 1));

_waveOut.Init(provider);
_waveOut.Play();

Если ваши необработанные данные на самом деле являются wav-файлом, вы уже имеете кодировку в заголовке и можете использовать этот метод

byte[] bytes = new byte[1024];

WaveFileReader reader = new WaveFileReader(new MemoryStream(bytes));

_waveOut.Init(reader);
_waveOut.Play();