还与上述问题有关,如何使用Naudio在资源中播放音频文件? 对于第二个问题,我有这段代码:
IWavePlayer waveOutDevice;
IWaveProvider provider;
public void PlaySound(byte[] sound)
{
waveoutDevice = new WaveOutEvent();
provider = new RawSourceWaveStrem(new MemoryStream(sound), new WaveFormat();
if (waveOutDevice != null)
waveOutDevice.Stop();
waveOutDevice.Init(provider);
waveOutDevice.Play();
}
在我的表单构造函数中,我会执行类似 -
的操作PlaySound(Properties.Resources.beepsound)
beepsound是声音文件....但是我只是在调用此方法时听到噪音。可能有什么不对?
答案 0 :(得分:1)
WaveFileReader
类可以接受Stream
作为参数,因此您可以使用MemoryStream
来封装从文件中加载了内容的byte[]
缓冲区。
这样的事情:
byte[] fileContent = File.ReadAllBytes(@"C:\Some\File.wav");
var waveFileReader = new WaveFileReader(new MemoryStream(fileContent), true);
您可以使用GetManifestResourceStream
或类似内容获取资源的流并使用它。如果要重用流,请将false
作为第二个参数传递,这将阻止它们与WaveFileReader
实例一起处理。