在WinForm应用程序中播放MP3文件
我正在开发一个WinForm
应用程序。 当用户点击一个button时,我想播放一个MP3文件。
MP3文件位于执行应用程序的计算机的文件系统中。
我已经Google了一段时间,我已经find有关System.Media.SoundPlayer
类的信息。 但是我读过SoundPlayer
类只能用于播放.wav格式的文件。
什么类可以用来播放.mp3格式的文件?
任何帮助将不胜感激。
下面的链接,给出了一个非常好的教程,关于从Windows窗体与C#播放MP3文件:
http://www.daniweb.com/software-development/csharp/threads/292695/playing-mp3-in-c
这个链接将引导你到一个主题,其中包含了很多关于如何播放mp3歌曲的信息,使用Windows窗体。 它还包含很多其他项目,试图达到同样的目的:
例如使用这个代码.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();
- 首先去你的项目的属性
- 点击添加引用
-
在窗口媒体播放器的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();