web-dev-qa-db-fra.com

Lecture d'un fichier MP3 dans une application WinForm

Je développe une application WinForm. Je souhaite lire un fichier MP3 lorsque l'utilisateur clique sur un bouton.

Le fichier MP3 se trouve dans le système de fichiers de l'ordinateur sur lequel l'application est exécutée.
Je suis sur Google depuis un moment et j'ai trouvé des informations sur le System.Media.SoundPlayer classe. Mais j'ai lu que la classe SoundPlayer ne peut être utilisée que pour lire des fichiers au format .wav.

Quelles classes peuvent être utilisées pour lire des fichiers au format .mp3?

Toute aide sera fortement appréciée.

43
user1139666

Le lien ci-dessous donne un très bon tutoriel sur la lecture de fichiers MP3 à partir d’un formulaire Windows avec c #:

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

Ce lien vous mènera à un sujet contenant de nombreuses informations sur la lecture d'un morceau MP3 à l'aide de formulaires Windows. Il contient également beaucoup d'autres projets, essayant de réaliser la même chose:

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

Par exemple, utilisez ce code pour .mp3:

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

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

Ensuite, mettez seulement wplayer.Controls.Play (); dans l'événement Button_Click.

Par exemple, utilisez ce code pour .wav:

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

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

Mettez le player.Play (); dans l'événement Button_Click, et cela fonctionnera.

39
Max

1) Le moyen le plus simple serait d'utiliser 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) Vous pouvez également utiliser la bibliothèque open source NAudio . Il peut lire des fichiers MP3 en utilisant différentes méthodes et offre bien plus que la simple lecture d'un fichier.

C'est aussi simple que

using NAudio;
using NAudio.Wave;

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

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

N'oubliez pas de disposer après l'arrêt

waveOutDevice.Stop();
audioFileReader.Dispose();
waveOutDevice.Dispose();
27
VladL
  1. allez d'abord dans les propriétés de votre projet
  2. cliquer sur ajouter des références
  3. ajoutez la bibliothèque sous l'objet COM pour Windows Media Player puis tapez votre code où vous voulez


    La source:

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

vous pouvez utiliser l'API mciSendString pour lire un fichier mp3 ou wav comme celui-ci

[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); 
1
krisliu