如何从C#中的资源播放.mp3文件?

我把music.mp3放在资源中,然后我将Windows Media Player添加到参考资料中。 我写了这段代码:

WindowsMediaPlayer wmp = new WindowsMediaPlayer(); wmp.URL = "music.mp3"; wmp.controls.play(); 

它不起作用。 我怎么能从资源中播放.mp3文件?

我做的:

 WindowsMediaPlayer wmp = new WindowsMediaPlayer(); Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("PostGen.Resources.Kalimba.mp3"); using (Stream output = new FileStream ("C:\\temp.mp3", FileMode.Create)) { byte[] buffer = new byte[32*1024]; int read; while ( (read= stream.Read(buffer, 0, buffer.Length)) > 0) { output.Write(buffer, 0, read); } } wmp.URL = "C:\\temp.mp3"; wmp.controls.play(); 

我们必须删除这个临时文件:

 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { File.Delete("C:\\temp.mp3"); } 

我包装了mp3解码器库,并为.net开发人员提供了它。 你可以在这里找到它:

http://sourceforge.net/projects/mpg123net/

包括将mp3文件转换为PCM的示例,以及读取ID3标签。

读取您的资源,将其转换为PCM并将其输出到waveOut类,该类可用作interop .NET组件。 无需创建临时文件。

sourceforge上也提供了waveOut类:

http://windowsmedianet.sourceforge.net/

或者Tyr这个;

  var file = $"{Path.GetTempPath()}temp.mp3"; if (!File.Exists(file)) { using (Stream output = new FileStream(file, FileMode.Create)) { output.Write(Properties.Resources.Kalimba, 0, Properties.Resources.Kalimba.Length); } } var wmp = new WindowsMediaPlayer { URL = file }; wmp.controls.play();