2013-02-22 25 views
30

Pracuję nad aplikacją WinForm. Chcę odtwarzać plik MP3, gdy użytkownik kliknie przycisk.Odtwarzanie pliku MP3 w aplikacji WinForm

Plik MP3 znajduje się w systemie plików komputera, na którym aplikacja jest uruchomiona.
Mam Google Googled na chwilę i znalazłem informacje na temat klasy System.Media.SoundPlayer. Ale przeczytałem, że klasa SoundPlayer może być używana tylko do odtwarzania plików w formacie .wav.

W jakich klasach można odtwarzać pliki w formacie .mp3?

Każda pomoc zostanie bardzo doceniona.

+1

Potrzebują Państwo dodatkowych informacji, czy też już zrealizować swoje potrzeby? – Max

Odpowiedz

33

link poniżej, daje bardzo dobry tutorial, o odtwarzanie plików mp3 z formularza okien z C#:

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

Ten link zaprowadzi Państwa do temat, który zawiera wiele informacji o tym, jak odtwarzać utwór mp3, korzystając z formularzy systemu Windows. Zawiera on także wiele innych projektów, starając się osiągnąć to samo:

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

Na przykład użyć tego kodu do .mp3:

WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer(); 

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

Potem tylko umieścić wplayer.Controls.Play(); w zdarzeniu Button_Click.

Na przykład użyć tego kodu do .wav:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(); 

player.SoundLocation = "Sound.wav"; 
player.Play(); 

Umieść player.Play(); w zdarzeniu Button_Click i będzie działać.

+1

Chociaż prawdopodobnie nie można być w 100% pewnym, że program Windows Media Player jest zainstalowany w systemie docelowym. – Odys

+0

Zgadzam się, sprawdź następujące pytanie w celu sprawdzenia: http://stackoverflow.com/questions/3718152/how-to-check-what-version-of-windows-media-layer-is-installed-on-the- maszyna, ponieważ myślę, że to jest offtopic dla tego pytania. – Max

20

1) Najprostszym sposobem byłoby używać 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) Alternatywnie można skorzystać z biblioteki open source NAudio. Może odtwarzać pliki mp3 przy użyciu różnych metod i oferuje znacznie więcej niż tylko odtwarzanie pliku.

To jest tak proste, jak

using NAudio; 
using NAudio.Wave; 

IWavePlayer waveOutDevice = new WaveOut(); 
AudioFileReader audioFileReader = new AudioFileReader("Hadouken! - Ugly.mp3"); 

waveOutDevice.Init(audioFileReader); 
waveOutDevice.Play(); 

Nie zapomnij wyrzucać po przystanku

waveOutDevice.Stop(); 
audioFileReader.Dispose(); 
waveOutDevice.Dispose(); 
6
  1. Idź do właściwości projektu
  2. kliknij Dodaj referencje
  3. dodać bibliotekę pod obiekt COM za oknem odtwarzacza multimedialnego następnie wpisać swój kod, w którym chcesz


    Źródło:

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

Bibliotekę można znaleźć w systemie windows/system32 jako wmp.dll –

1

można użyć API mciSendString odgrywać mp3 lub wav jak ten

[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

to podejście obsługuje także formaty .mid, .wav i .wma. –

+0

Komentarze nieobowiązkowe można edytować tylko w ciągu 5 minut. W każdym razie ten link jest wart wspomnienia: https://stackoverflow.com/questions/3905732/how-do-i-repeat-a-midi-file-in-c –

-2

Refaktoryzacja:

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