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