使用naudio播放byte []

时间:2015-11-27 09:50:16

标签: c# naudio

  1. 如何将音频文件转换为byte []并使用Naudio播放? (代码将不胜感激)
  2. 还与上述问题有关,如何使用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是声音文件....但是我只是在调用此方法时听到噪音。可能有什么不对?

1 个答案:

答案 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实例一起处理。