2008-09-24 16 views
7

Con C#, ¿Cómo reproduzco (Pausa, Adelante ...) un archivo de sonido (mp3, ogg)? El archivo podría estar en el disco duro o en Internet.Cómo reproducir un archivo de sonido

¿Hay alguna biblioteca o clase que me pueda facilitar el trabajo?

+0

Buena pregunta! Este tipo de cosas es algo que mucha gente parece dar por sentado. – theo

+0

@ theo, estoy de acuerdo con usted. En realidad estoy buscando una respuesta a una pregunta similar. – ThN

Respuesta

7

Si no le importa que incluye Microsoft.VisualBasic.dll en su proyecto, puede hacerlo de esta manera:

var audio = new Microsoft.VisualBasic.Devices.Audio(); 
audio.Play("some file path"); 

Si usted quiere hacer cosas más complejas , la manera más fácil que conozco es usar la API del Reproductor de Windows Media. Agregas la DLL y luego trabajas con ella. La API es un poco torpe, pero funciona; Lo he usado para hacer mi propio envoltorio de reproductor de música alrededor de Windows Media Player para uso personal. Aquí hay algunos enlaces útiles para ayudarle a empezar:

Building a Web Site with ASP .NET 2.0 to Navigate Your Music Library

Windows Media Object Model

Let the Music Play!

EDIT:

Desde que escribí esto, he encontrado una manera más fácil, si no te importa incluir clases WPF en tu código. WPF (.NET 3.0 y reenvío) tiene una clase MediaPlayer que es un contenedor de Windows Media Player. Esto significa que no tiene que escribir su propio contenedor, lo que es bueno ya que, como mencioné anteriormente, la API de WMP es bastante torpe y difícil de usar.

4

Recomendaría el BASS Library. Puede reproducir archivos de música basados ​​en archivos y contenido de transmisión. También hay un contenedor .NET disponible.

+0

Sí, lo vi. Incluso hay un artículo de CodeProject sobre nBass (un contenedor de clase de Bass). Es fácil cómo se hace, pero usa una versión anterior de Bass (v1.8), estoy buscando la versión que usó, espero poder descargarla. –

0

Hay un control de reproductor multimedia, básicamente lo que Media Player usa. Puedes poner eso en tu programa y hay una API que puedes usar para controlarlo. Creo que es la mejor solución rápida.

2

Alvas.Audio tiene RecordPlayer clase con estas posibilidades:

 public static void TestRecordPlayer() 
     { 
      RecordPlayer rp = new RecordPlayer(); 
      rp.PropertyChanged += new PropertyChangedEventHandler(rp_PropertyChanged); 
      rp.Open(new Mp3Reader(File.OpenRead("in.mp3"))); 
      rp.Play(); 
      rp.Forward(1000); 
      rp.Pause(); 
     } 

     static void rp_PropertyChanged(object sender, PropertyChangedEventArgs e) 
     { 
      switch (e.PropertyName) 
      { 
       case RecordPlayer.StateProperty: 
        RecordPlayer rp = ((RecordPlayer)sender); 
        if (rp.State == DeviceState.Stopped) 
        { 
         rp.Close(); 
        } 
        break; 
      } 
     } 
Cuestiones relacionadas