2013-02-22 107 views
30

我正在開發一個WinForm應用程序。我想在用戶點擊按鈕時播放MP3文件。在WinForm應用程序中播放MP3文件

MP3文件位於執行應用程序的計算機的文件系統中。
我已經谷歌搜索了一段時間,我發現有關System.Media.SoundPlayer類的信息。但我讀過SoundPlayer類只能用於播放.wav格式的文件。

什麼類可以用來播放.mp3格式的文件?

任何幫助將不勝感激。

+1

你需要一些額外的信息,或者你已經實現你的需求? – Max 2013-02-22 14:17:35

回答

33

下面的鏈接,給出了一個很好的教程後,部署,有關從窗口形式播放MP3文件用C#:

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

此鏈接將帶你到一個主題,其中包含許多關於如何使用Windows窗體播放mp3歌曲的信息。它還包含了很多其他的項目,努力實現同樣的事情:

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

雖然可能,但您無法100%確定Windows Media Player安裝在目標系統上。 – Odys 2015-05-20 15:16:42

+0

我同意,參考以下問題進行檢查:http://stackoverflow.com/questions/3718152/how-to-check-what-version-of-windows-media-player-is-installed-on-the-機器,因爲我認爲這是一個偏離這個問題。 – Max 2015-05-20 15:18:32

20

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(); 
6
  1. 第一次去你的項目的屬性
  2. 單擊添加引用
  3. 下添加COM對象的庫窗口媒體播放器 然後鍵入您的代碼放到要


    來源:

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

該庫可以在windows/system32中找到,格式爲wmp.dll – 2016-08-26 23:41:13

1

可以使用mciSendString API來播放MP3或類似這樣的

[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); 
+0

此方法也支持.mid,.wav和.wma格式 – 2017-06-20 16:05:59

+0

不知道註釋只能在5分鐘內編輯。無論如何,這個鏈接值得一提:https://stackoverflow.com/questions/3905732/how-do-i-repeat-a-midi-file-in-c – 2017-06-20 16:17:25

-2

重構一個wav文件:

new WindowsMediaPlayer() { URL = "MyMusic.mp3" }.controls.play();