Días de programación y de aprendizaje – DLNA Player, mi nuevo invento

Días de programación y de aprendizaje – DLNA Player, mi nuevo invento

Hola a todos,

Hace un tiempo, recibí mi reproductor de música HiBy R3 y lo he estado usando a diario. Recientemente, comencé a usar su función de DLNA.

DLNA es un protocolo que se usa para comunicarse con reproductores audiovisuales, enviarle contenido y controlarlos. Consiste usualmente de lo siguiente:

  • Servidor: Aquí es donde almacenamos nuestro contenido (música, videos, imágenes, etc). Éstos son enviados al reproductor mediante un controlador que nos permite navegar en el servidor, escojer el contenido que queremos reproducir, y controlar nuestro reproductor.
  • Reproductor (Renderer): Éste es el dispositivo que se encarga de decodificar el contenido que obtiene del servidor. Algunos reproductores también funcionan como controlador.
  • Controlador: Ésto es como un control remoto. Escojes el archivo multimedia y el reproductor a usar y lo controlas.

Aunque estos son los componentes básicos, es posible que uno de los anteriores haga la función de otra parte. Por ejemplo, puede ser que el servidor funcione como controlador y reproductor, que el reproductor funcione como controlador, y que el controlador actue como reproductor.

Usando la función DLNA con un equipo Android es sencillo gracias a una aplicación llamada BubbleUPnP, a la cual compré su licencia de uso ya que la versión gratuita tiene limitaciones. Con esto, puedo escojer mi HiBy R3 como reproductor y navegar mis archivos en el celular, escogiendo la música que quiero escuchar y controlar el reproductor. El problema que tuve fue que en Windows no encontraba un programa que fuese compatible con el HiBy R3, pues funcionaban parcialmente o símplemente no funcionaban. Es por eso que comencé a leer acerca del protocolo DLNA/UPnP y comencé a ver algunos ejemplos. Luego, comencé a escribir mi propio programa que cumpla con los requisitos que quería.

Encontré un recurso en CodeProject el cual pueden ver aquí. Habla sobre cómo comunicarse con un reproductor, enviar el archivo a reproducir y controlarlo. Cuando lo probé, funcionó excelente con mi servidor web, pero para el programa que quería programar quería que funcione como un reproductor normal, así que necesitaba implementar un servidor interno, y es eso lo que me puse a investigar luego.

Comencé a buscar ejemplos de servidores HTTP para el lenguaje de programación C# y comencé a probarlos. Algunos funcionaban y cumplían su función, pero mi HiBy R3 no podía reproducir las canciones a pesar de que identificaba la canción. Resulta que necesitaba un servidor capáz de enviar pedazos de los archivos, y investigando un poco más, encontré este excelente recurso también en CodeProject, el cual implementa un simple servidor HTTP para enviar archivos multimedia a equipos DLNA.

Ambos códigos son de código abierto y su licencia permite el uso en proyectos al igual que permite su modificación, por lo que modifiqué esos códigos para que funcionen con mi proyecto de acuerdo a mis requerimientos.

Conoce «DLNA Player»:

DLNA Player
DLNA Player Screenshot

Diseñé mi reproductor de música usando los códigos anteriomente mencionados. Este reproductor te permite escojer un reproductor conectado a la red, construir una lista de archivos a reproducir, y controlar el mismo con sus botones de Play, Pausa, Stop, Track anterior y track siguiente. También permite navegar el archivo para poner la música en la parte que desees. Puedes ver el progreso de reproducción en tiempo real. Para ser mi primer programa que funcione así, no está nada mal 😁.

Algo importante es que el programa no reproduce los archivos, sino que símplemente lo copia a memoria para que el servidor interno responda a las llamadas del reproductor y le envíe la parte del archivo solicitada.

Para usar el programa, símplemente tienes que poner la dirección IP de tu computadora (El programa hace esto por tí, pero si tienes variaz interfaces de redes, el programa podría confundirse y usar una IP que no es la correcta), un puerto (lo que está luego del : en la dirección IP en la imagen de arriba), presionas el botón de aplicar (sólo si hubo algún cambio), y luego le das al botón de buscar reproductores. Selecciona uno y luego arrastra archivos al programa. Presiona el botón de Play y disfruta de la música.

El programa actúa como un servidor y es por eso que necesita la dirección IP de la computadora.

El código de este nuevo proyecto lo encuentran aquí. https://github.com/moisesmcardona/DLNA-Player

DLNA Player GitHub Repo

Esto lo probé con mi reproductor HiBy R3. Ahora puedo disfrutar de mi música descomprimida sin depender de conexiones Wifi, pues el programa envía el archivo original al reproductor y es el reproductor el que decodifica el archivo. Esto, y un buen amplificador y decodificador digital a análogo hacen que la música suene mucho mejor que nunca.

Espero que esta herramienta sea útil y esto ha sido una aventura de aprendizaje para mí. He estado prácticamente los pasados días en esto y lo importante es que no me rendí y pude hacer algo que disfrutaré todos los días, pues me encanta escuchar música a diario 😊.