在WinForm应用程序中播放MP3文件

我正在开发一个WinForm应用程序。 当用户点击一个button时,我想播放一个MP3文件。

MP3文件位于执行应用程序的计算机的文件系统中。
我已经Google了一段时间,我已经find有关System.Media.SoundPlayer类的信息。 但是我读过SoundPlayer类只能用于播放.wav格式的文件。

什么类可以用来播放.mp3格式的文件?

任何帮助将不胜感激。

5 Solutions collect form web for “在WinForm应用程序中播放MP3文件”

下面的链接,给出了一个非常好的教程,关于从Windows窗体与C#播放MP3文件:

http://www.daniweb.com/software-development/csharp/threads/292695/playing-mp3-in-c

这个链接将引导你到一个主题,其中包含了很多关于如何播放mp3歌曲的信息,使用Windows窗体。 它还包含很多其他项目,试图达到同样的目的:

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/3dbfb9a3-4e14-41d1-afbb-1790420706fe

例如使用这个代码.mp3:

 WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer(); wplayer.URL = "My MP3 file.mp3"; wplayer.Controls.Play(); 

那么只能把wplayer.Controls.Play(); 在Button_Click事件中。

例如使用这个代码.wav:

 System.Media.SoundPlayer player = new System.Media.SoundPlayer(); player.SoundLocation = "Sound.wav"; player.Play(); 

把player.Play(); 在Button_Click事件中,它将工作。

1)最简单的方法是使用WMPLib

 WMPLib.WindowsMediaPlayer Player; private void PlayFile(String url) { Player = new WMPLib.WindowsMediaPlayer(); Player.PlayStateChange += Player_PlayStateChange; Player.URL = url; Player.controls.play(); } private void Player_PlayStateChange(int NewState) { if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped) { //Actions on stop } } 

2)或者,你可以使用开放源代码库NAudio 。 它可以使用不同的方法播放mp3文件,实际上提供的不仅仅是播放文件。

这很简单

 using NAudio; using NAudio.Wave; IWavePlayer waveOutDevice = new WaveOut(); AudioFileReader audioFileReader = new AudioFileReader("Hadouken! - Ugly.mp3"); waveOutDevice.Init(audioFileReader); waveOutDevice.Play(); 

不要忘记在停车后处理

 waveOutDevice.Stop(); audioFileReader.Dispose(); waveOutDevice.Dispose(); 
  1. 首先去你的项目的属性
  2. 点击添加引用
  3. 在窗口媒体播放器的COM对象下添加库,然后在需要的位置input代码

    资源:

      WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer(); wplayer.URL = @"C:\Users\Adil M\Documents\Visual Studio 2012\adil.mp3"; wplayer.controls.play(); 

您可以使用mciSendString API来播放这样的mp3或wav文件

 [DllImport("winmm.dll")] public static extern uint mciSendString( string lpstrCommand, lpstrReturnString, uint uReturnLength, uint hWndCallback); mciSendString(@"close temp_alias", null, 0, 0); mciSendString(@"open ""music.mp3"" alias temp_alias", null, 0, 0); mciSendString("play temp_alias repeat", null, 0, 0); 

重构:

 new WindowsMediaPlayer() { URL = "MyMusic.mp3" }.controls.play(); 
  • 在创build新的GUI时,WPF是Windows Forms的首选吗?
  • 如何从C#中的另一个线程更新GUI?
  • 将枚举绑定到WinFormscombobox,然后进行设置
  • C#如何通过点击一个button,而文本框有焦点?
  • 删除Windows窗体中的标题栏
  • 如何将一个滚动条添加到一个面板控件与Windows窗体应用程序中的许多控件?
  • 滚动到C#文本框的底部
  • Application.OpenForms.Count = 0总是
  • 什么设置代码应该在窗体构造与窗体加载事件?
  • Winforms TableLayoutPanel以编程方式添加行
  • Application.ThreadException和AppDomain.CurrentDomain.UnhandledException之间有什么区别?