如何使用NAudio播放音频原始数据的字节数组?

byte[] bytes = new byte[1024]; 

假设bytes是一个充满音频原始数据的数组。

如何使用WaveOut对象播放此字节数组?

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

我想通了,这是解决方案:

 byte[] bytes = new byte[1024]; IWaveProvider provider = new RawSourceWaveStream( new MemoryStream(bytes), new WaveFormat()); _waveOut.Init(provider); _waveOut.Play(); 

接受的答案假设字节流是44,1kHz,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();