Reproducir música (mp3, ogg…) y vídeo (avi, divx, mpeg…) en C# mediante Windows Media Player

Para reproducir música o vídeo dentro de nuestra aplicación C# lo más cómodo es hacer uso del componente Windows Media. Para ello, dentro de la pestaña “Componentes” de la barra del cuadro de herramientas, hacemos click derecho y “Elegir elementos”.

Nos vamos a “Componentes COM” y seleccionamos el “Windows Media Player”. A partir de ese momento lo tenemos disponible :) Vamos a crear un sencillo ejemplo.

Añadimos una etiqueta para una especie de título, un componente Windows Media Player, un botón para cargar y reproducir un fichero y un cuadro de diálogo de abrir fichero.

Gráficamente podría quedar así:

Haremos que el botón lance el cuadro de diálogo si no ha sido lanzado antes y reproduzca el fichero, si ya se ha abierto uno, entonces simplemente hará de Play. No vamos a tener en cuenta excepciones para ver más claro el ejemplo… pero no pongáis esto tal cual en producción.

En el evento “Click” del botón podremos:

private void btReproducir_Click(object sender, EventArgs e)
{
    if (!ficheroAbierto && dlgAbrirFichero.ShowDialog() == DialogResult.OK)
    {
        windowsMedia.URL = dlgAbrirFichero.FileName; ficheroAbierto = true;
    } 
    windowsMedia.Ctlcontrols.play();
}

Las operaciones comunes de reproducción, pausa y demás, están dentro de “Ctlcontrols”. El URL nos permite abrir tanto vídeo como audio, en local o en remoto ;)

Si no queréis empotrar Windows Media, sino simplemente hacer uso de él pero sin que se vea, o con vuestros propios controles (igual que hemos hecho con el botón reproducir, pero con todo) podéis hacerlo “invisible” mediante:

windowsMedia.uiMode = "invisible";

Como siempre, cualquier duda, comentario, sugerencia, etc… será bien recibida :)

Por Carballude

Me llamo Pablo Carballude González, soy graduado en computación con master en HCI y Seguridad Informática. Actualmente trabajo para Amazon en Seattle como Software Developer Engineer. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P

52 comentarios

  1. ¿Y eso de programar para todos los sistemas operativos?

    Na, que me parece a mi que ya estás vendido del todo. Mira que hacer un programa que sólo funciona en Windows.

    Saludos.

  2. tu misterioso y nonimo director de pfc: Soporta recepcción de streaming… de hecho, a ver si hago una pequeña demo con un par de emisoras.

    rastreador: El programa sólo funciona en Windows porque usa el control OCX de Windows Media, estoy buscando algun control similar que funcione en otras plataformas.

  3. Saludos, veo que sabes manejar videos con C#. Tengo una inquietud es que no sé cómo hacer Video Streaming con C# ó qué se necesita para ésto. Estoy trabajando con un proyecto y estoy utilizando una aplicación Web que estamos creando en C# y necesito tener un sistema de monitoreo basado en cámaras de seguridad. Necesito mostrar el video en vivo en la aplicación Web y también ir almacenandolo en una base de datos. Si me puedes brindar alguna ayuda con esto te lo agradecería de sobremanera. Gracias.

  4. Me gustaria saber como reproducir los videos, pèro sin usar el windows media, o sea, crear nuestro propio reproductor . Gracias

  5. oye amigo no funciona dice que el nombre ficheroabierto no existe en el contexto actual que onda se tiene que declarar estas variables o de donde son:

  6. Hola!!! Muchas gracias por el ejemplo pero necesito saber de que modo podría manipular el control de volumen del reproductor, ya sabes subir y bajar el volumen de pista que estoy reproduciendo

  7. Hice los mismos pasos de echo me aparece el windows media player lo marco le doy aceptar pero no me aparece en el toolbox. Tengo el visual estudio .net 2005 sp2 con windows vista profesional y nose que hacer para que aparesca busque el .ocx en la opcion browse que tambien te da y al abrirlo me sale un error.

    Pd: Si alguien me ayuda porfa, a todo esto también salia en algunas páginas que se debáa tener ajax pero no creo que sea así es un control de windows nada mas(igual le agrege la extension) Saludos!

  8. dusculpa
    no podrias subir los archivos con el codigo
    lo que pasa es que me encargaron eso mismo en la escuela y no lo puedo hacer funcionar me marca que algunos ficheros no estan en el contexto actual
    te agradeceria mucho si pudieras ayudarme

  9. pablo :

    oye amigo no funciona dice que el nombre ficheroabierto no existe en el contexto actual que onda se tiene que declarar estas variables o de donde son:

    «ficheroabierto» es una variable booleana de clase que he puesto yo como ejemplo. No tienes más que declarar «bool ficheroabierto = false;» en la clase y funcionará ;)

    ignacio :

    Pd: Si alguien me ayuda porfa, a todo esto también salia en algunas páginas que se debáa tener ajax pero no creo que sea así es un control de windows nada mas(igual le agrege la extension) Saludos!

    El método está pensado para aplicaciones de escritorio. Es posible usar OCX en ASP.Net, pero sinceramente, no lo he hecho en mi vida.

    Carlos :

    dusculpa
    no podrias subir los archivos con el codigo
    lo que pasa es que me encargaron eso mismo en la escuela y no lo puedo hacer funcionar me marca que algunos ficheros no estan en el contexto actual
    te agradeceria mucho si pudieras ayudarme

    Pues la verdad es que no tengo ya esos ficheros… pero si uno de estos días tengo tiempo, vuelvo a recrear el programa y los subo… pero no prometo nada :(

  10. daguillo de kuliakan :

    axWindowsMediaPlayer1.URL = @”C:/clock.avi”;
    para reproducir el video asi de simple

    Si te fijas yo escribí:
    windowsMedia.URL = dlgAbrirFichero.FileName;
    Que es lo mismo… simplemente que en vez de poner la ruta absoluta, pone el fichero seleccionado en el dialogo de abrir fichero.

    alberto :

    ¿como pregunto si el item de reproduccion actual es el primero de mi lista?

    Pues no lo sé, pero seguramente que windowsMedia tiene alguna propiedad que te de la lista de reproducción.

  11. hola quisiera que me informe sobre como puedo
    hacer q reproduscan varios videos seguidos y no uno solo

  12. miguel :

    hola quisiera que me informe sobre como puedo
    hacer q reproduscan varios videos seguidos y no uno solo

    Puedes usar la lista de reproducción del control de Windows Media o controlar el estado de la reproducción y reproducir otro fichero cuando haya acabado el anterior.

    En cualquier caso, lo mejor es que mires la documentación del control de Windows Media en la MSDN.

  13. hola… me gustaria saber como hacer que el windows media me reprodusca la url metida en una base de datos…

  14. gabriela :

    hola… me gustaria saber como hacer que el windows media me reprodusca la url metida en una base de datos…

    Es indiferente dónde esté almacenada. Simplemente pásasela a Windows Media.

  15. Estoy realizando un sistema tutor inteligente y este dato me ha resultado bastante util, para reproducir varios videos lo que hice fue que logre reproducir uno de tras otro

  16. cuate por que el» ficheroAbierto» no lo reconoce puedes ayudarme a resolver esta duda lo mas pronto va

  17. jhon :

    cuate por que el” ficheroAbierto” no lo reconoce puedes ayudarme a resolver esta duda lo mas pronto va

    ¿Has declarado la variable? private bool ficheroAbierto = false;

  18. bueno pero le comento lo que pasa tengo q hacer una rockola con listas encadenadas y tengo algunas dudillas :-D

  19. disculpa tengo que hacer un programa en c# que reprodusca musica pero no utilizando el mugroso windows como le puedo hacer

  20. oligarka :

    bueno pero le comento lo que pasa tengo q hacer una rockola con listas encadenadas y tengo algunas dudillas :-D

    Lo mejor que puedes hacer es buscarte un libro donde expliquen estructuras de datos. Existen multitud de ellos y en amazon los puedes encontrar a muy buen precio.

    Omar :

    disculpa tengo que hacer un programa en c# que reprodusca musica pero no utilizando el mugroso windows como le puedo hacer

    Cuando aprendas modales y ortografía, hablamos.

  21. hola!
    yo estoy haciendo un reproductor como el que tienes descrito solo que me piden que utilizando un comboBox crear una lista de reproducción y no eh encontrado una forma de hacer que suceda eso
    estoy programando en c#
    de ante mano gracias

  22. hola amigo disculpa pero tengo un pekeño problema me estoy iniciando en esto del c# pero no entiendo a que le asignas el nombre de ficheroAbierto tu respuesta sera inportante para mi muchas gracias y tambien el de ocultar el windws media player no me funciona muchas gracias

  23. Hola amigos …soy nuevo ak y me gustaria ver si ustedes saben de algun dll que me permita reproducir musica… pero lo quiero desarrollar con monodevelop c# en ubuntu linnux si tienen idea de algun ejemplo o tienen alguna recomendacion es bueno gracias

  24. yo hice un programa para rockola usando el control de wmp, la verdad es muy útil, y no he encontrado algo mejor, tambien lo quiero hacer en linux pero no encuentro la manera, si pueden crear listas de reproducción, es cuestión que lean un poco mas y que traten, traten y sigan tratando hasta que que les salga.

  25. Hice un reproductor parecido a este, pero me encuentro en el problema de hacr que reprodusca difeentes formatos ? alguna idea ? gracias d antemano

  26. QUE TAL .. YO HICE UNA ROCKOLA.. GUARNADO LOS ARCHIVOS DE AUDIO Y LAS PORTADAS EN UNA BASE DE DATOS . PERO NECESITE ALGO QUE ME AVISE O ME CONTROLE CUANDO LA CANCION YA ACABO ..ES DECIR QUE C# ME MANDE UN MENSAJE O ALGO ASI… SERIA DE GRAN AYUDA GRAX

  27. ES DECIR .. DEVUELVO EL SONIDO DE LA BASE DE DATOS.. LA REPRODUSCO EN EL WMP .. PERO CUANDO ACABA LA CANCION NECESITO QUE TOME OTRA DE LA BD PREVIAMENTE SELECCIONADA Y QUE SE REPRODUSCA SOLA .. PERO EN VERDAD NO E ENCONTRADO MANERA SABER CUANDO YA ACABO LA CANCION (BUENO ACABA CUANDO YA NO SE OLLE VERDAD..)PERO YO NECESITO QUE ESO LO SEPA C#.. DE ANTEMANO GRACIAS

  28. hola amigos, tengo una duda, espero q me puedan ayudar, quiero cargar 2 videos en 2 controles WMP distintos pero necesito q se reproduzcan a la misma vez, q adelanten o retrocedan pero en forma sincronizada, por favor si tienen alguna idea de como hacerlo o de alguna otra libreria para poder desarrollarlo seria muy util para mi, gracias de antemano espero q me puedan ayudar.

  29. Construir un reproductor con la tecnologia COM de .NET pero cuando llevo mi debug a otra maquina solo me reproduce el audio y no el video, para los archivos d audio no hay problemas, pero con los archivos de videos si. Cual podria ser el problema y como podria solucionarlo? jcribera_14@hotmail.com

  30. si la pelicula es con extencion .rmvb ???
    nome la reproducee,,
    alguna sugerenciaa??

    de antemano muchas Gracias por tus aportes amigo

  31. Alo, muy bueno, solo me falta la instruccion para indicar la cancion que quiero reproducir si esta en mi computadora, y si quiero agregar una lista de reproduccion como le hago??
    Gracias n_n

  32. hola quiero me ayudes estoy codificando en c# para poner un video en un programa que estoy haciendo y revise tu codigo y tengo error en dlgAbrirFichero.ShowDialog() nesecito ayudaa..gracias

  33. Hola, tengo un problema, ya agregué el componente, pero en mi caja de herramientas no me aparece el reproductor del Windows Media, será por la versión de Fremwork? (que no creo) o qué sucede? espero y alguien me pueda ayudar.

  34. Para reicor… prodrias agregar un timer con la longitud de mp3 (tiempo que dura la cancion) y asi cuando termine dicha cancion podras seleccionar la otra….

    Para juan Carlos…. necesitas tener instalados los codecs de video….

    espero haber ayudado….

  35. Hola, excelente articulo, una pregunta.. quisiera usar el reproductor windows media para poder transmitir a un servidor de streaming tipo shoutcast… es posible hacer eso? como se podria hacer?

    Gracias,

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *