Manejar MPlayer desde C#

Por si alguien no conoce MPlayer (haber estado en una cueva los últimos 10 años nos puede haber pasado a todos) decir que es uno de los mejores reproductores de audio y vídeo que existen. Si MPlayer no puede… lo más seguro es que nadie pueda ;)

No existe, que yo sepa, ninguna API contra la que se pueda trabajar ni ningún componente que encapsule su funcionalidad, así que tendremos que manejar el proceso. Eso, a parte de un coñazo, no sería mayor problema de no ser porque lo normal es que queramos tener el vídeo dentro de nuestra aplicación y no en una ventana aparte como hace MPlayer.

La forma de lograr la integración se basa en usar Overlays. Básicamente sería pintar de un color (en mi caso negro) una zona de la pantalla y decirle a MPlayer que sitúe el vídeo en el rectángulo de ese color que esté dentro de nuestra ventana.

Lograr el primer requisito (tener el recuadro de un color) no es difícil. Puede usarse un PictureBox y darle un color de fondo (Ojo, el color del PictureBox se da en RGB). Luego sólo tendremos que iniciar mplayer con la opción -colorkey 0x000000 (el código de color a MPlayer se le pasa en hexadecimal… ojo).

Ahora bien… si no le decimos a MPlayer en que ventana, difícilmente lograremos la integración. Para ello tenemos que pasarle el numero del manejador de nuestra ventana. Esto se puede obtener mediante la API de Windows. El código sería así:

[DllImport("user32.dll")]
 static extern int GetForegroundWindow();

 

Con eso ya podemos llamar a GetForegroundWindow() que nos devolverá el número del manejador de la ventana activa. No tendremos más que pasarle ese número a MPlayer de la forma «-wid numero». Automágicamente las reproducciones de MPlayer se efectuarán dentro de nuestra ventana.

No se si al final usaré MPlayer para algo, la verdad es que lo miré más como posibilidad para un futuro, ahora tengo cosas más urgentes.. pero si finalmente trabajo con él, intentaré crear un Assembly para que se pueda reutilizar el trabajo.

About the Author

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