Как я могу воспроизвести массив байтов аудио необработанных данных с помощью NAudio?
byte[] bytes = new byte[1024];
Предположим, что bytes
- это массив, заполненный звуковыми необработанными данными.
Как я могу воспроизвести этот массив байтов, используя объект WaveOut
?
_waveOut.Init(bytes); // <- Error: cannot resolve method.
_waveOut.Play();
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();