【问题标题】:Playing mp3 file with NAudio使用 NAudio 播放 mp3 文件
【发布时间】:2013-03-11 02:02:46
【问题描述】:

我按照 NAudio 网站上关于如何加载和播放 mp3 文件的教程进行操作,但即使我将音频文件放在正确的目录中,每当我运行时,程序都会崩溃并显示“vshost32.exe 已停止工作”。有任何想法吗?我在 Windows 7 上使用 Visual Studio 10.0。

这是教程给我的(确切的)代码:

   namespace NAudioTest
   {
       class Program
    {
    static IWavePlayer waveOutDevice;
    static WaveStream mainOutputStream;
    static WaveChannel32 volumeStream;

    static void Main(string[] args)
    {
        waveOutDevice = new WaveOut();
        mainOutputStream = CreateInputStream("Kalimba.mp3");
        waveOutDevice.Init(mainOutputStream);
        waveOutDevice.Play();
    }

    private static WaveStream CreateInputStream(string filename)
    {
        WaveChannel32 inputStream;
        if (filename.EndsWith(".mp3"))
        {
            WaveStream mp3Reader = new Mp3FileReader(filename);
            inputStream = new WaveChannel32(mp3Reader);
        }
        else
        {
            throw new InvalidOperationException("Unsupported extension");
        }
        volumeStream = inputStream;
        return volumeStream;
    }

}
}

(抱歉格式不好)

【问题讨论】:

  • 崩溃是什么意思..你能设置断点并单步执行代码并解释错误被抛出的状态吗..?
  • naudio 中的示例对您有何影响?
  • 看起来错误就在waveOutDevice.play()那一行,NAudioDemo.exe可以正常工作,但看起来NAudioDemo.cs项目解决方案中缺少文件?
  • 你需要向我们展示异常和堆栈跟踪

标签: c# naudio


【解决方案1】:

没关系,用这段代码让音频文件工作:

How to play a MP3 file using NAudio

 class Program
 {
     static void Main()
     {
         using (var rdr = new Mp3FileReader(filename))
         using (var waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
         {
              waveOut.Play();
              while (waveOut.PlaybackState == PlaybackState.Playing)
              {
                  Thread.Sleep(100);
              }
         }
     }
  }

这样更好吗?虽然我不确定 WaveOutEvent 的去向。 感谢您的所有帮助!

【讨论】:

  • 我不建议在 NAudio 1.3 之后的版本中使用这种技术。摆脱 ms、wavStream 和 baStream - 所有这些都是不必要的。此外,WaveOutEvent 将比使用 FunctionCallbacks 更可靠。
  • 太棒了,使用 WaveOutEvent 找到了另一个来源,好多了。感谢您创建这个!
  • @m00nbeam360:你能提供给大家吗(链接或代码)?
猜你喜欢
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
相关资源
最近更新 更多