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

本文关键字:字节 字节数 数组 原始数据 音频 何使用 NAudio 播放 | 更新日期: 2024-09-20 20:01:33

byte[] bytes = new byte[1024];

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

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

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

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

我想

通了,这是解决方案:

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();