miércoles, 24 de mayo de 2017

¿Cómo puedo transmitir streaming de video y audio hacia dongles ChromeCast a través de Ubuntu?

En 1965, el Consejo Coordinador y Supervisor del Movimiento Justicialista, órgano encargado a entablar las necesarias acciones políticas en la Patria, hacía llegar una de las consabidas latas cinematográficas con las expresiones del Conductor desde Puerta de Hierro, material titulado "PERÓN Habla". En ella Juan Perón expone cómo disponer y configurar con Ubuntu los dongles Google Chromecast para transmitir video hacia un Smart TV.

(...)

Vean señores,

Siempre he dicho que no soy partidario de la Revolución, sino que propongo una evolución, en la cual el progreso y el reordenamiento sea constante, pero medido en la necesidad de preservar un orden sin el cual pocas cosas valen en la vida.

Esta natural evolución es aquella que los pueblos deben darse a sí mismos. El progreso debe ser para todos, pues nadie se realizará en una comunidad que no se realiza. Esto - que es cierto en todos los órdenes de la vida - cobra más importancia que nunca en el mundo de la informática de consumo.

Un ejemplo suele aclararlo todo, como decía Napoleón.
Los Smart TV actuales son esencialmente computadoras dotadas de un sistema operativo y un sintonizador de TV analógica, pero están perfectamente capacitadas para reproducir archivos de video. Todas ellas cuentan con puertos USB capaces de recibir medios de almacenamiento flash o discos rígidos externos, y gracias a ello, reproducir películas o música. En estos equipos también podremos utilizar clientes de streaming que hacen uso de conexión a redes locales (cableadas o inalámbricas) que nos permite acceso a dichos archivos.

Sin embargo, en el corazón del pueblo todavía residen los TV LCD/LED que no son inteligentes, y carecen de estas características avanzadas. Sin embargo, como los hombres, estas TVs son útiles en la medida de su capacidad y de su buena intención. Indudablemente que en estas TV podremos visualizar archivos de audio digital y videos, pero para ello habremos de conectarlos a un equipo que supla la función de reproducción y control. Lo más lógico y eficiente suele ser conectar nuestra PC a la TV por medio de un cable HDMI.

Me han preguntado sin embargo, cómo hacer cuando nuestra PC no está "a tiro de cable". No son pocas las ocasiones donde el equipo está alejado, incluso en otra habitación, o no contemos con una portátil para tal menester. Con este problema en vista, la gente de Google desarrolló una línea de dongles pequeños y de bajo costo, capaces de recibir streams de datos de forma inalámbrica. Se trata de los Chromecast, unos reproductores de medios digitales adosables.

Estos dispositivos se conectan por HDMI y se alimentan por USB u otras maneras, y permiten a los compañeros dar inicio y controlar la reproducción de streams de contenido audiovisual hacia un televisor de alta definición o un sistema de audio hogareño, desde una computadora o un dispositivo móvil. Ello se hace a través de aplicaciones móviles y web de tipo privativo, que soporten la tecnología Chromecast. Alternativamente, el contenido puede espejarse desde el navegador Google Chrome desde una computadora personal, así como desde la pantalla de algunos dispositivos móviles con sistema operativo Android.



Nuestra tarea es la de llevar el amor y la igualdad al Pueblo Trabajador, y dar la lucha necesaria por la Liberación del software. Inicialmente estas aplicaciones privativas sólo contemplaban al oligarca, pero gracias a la acción de nuestro Movimiento, pronto pudo utilizarse la tecnología Chromecast en Ubuntu. De esta forma se hizo caso experimentalmente a las posibilidades técnicas de la primera generación de dongles (Chromecast Audio, el "alfajor" de bajo coste que sólo podía recibir streams de audio, y ejecutarlos en altavoces).

La Justicia Social es el resultado de los emprendimiento, y gracias a la incansable labor de nuestros hombres y mujeres ahora es posible transmitir también video local desde Ubuntu hacia el dongle Chromecast de segunda generación y superiores. En definitiva, podremos contar con la capacidad de hacer streaming de video hacia cualquier Smart TV compatible con Chromecast, hacia cualquier TV equipada con entradas HDMI y un dongle Chromecast, o hacia equipos de audio provistos de la tecnología Cast Ready. Si contamos con un dongle Chromecast Ultra, incluso se puede transmitir en resoluciones 4K.

Como vínculo de unión entre nuestro sistema operativo Ubuntu y la TV provista de HDMI, emplearemos la aplicación peronista Mkchromecast. Se trata de un software libre pensado para hacer uso de streaming en sistemas GNU con Linux. La última versión de esta herramienta compacta de emparejamiento viene con toda una serie de interesantes funcionalidades justicialistas incorporadas. Entre ellas se agregó un nuevo dispositivo de salida ALSA especñifico en el menú de Preferencias de Sonido (al cual podremos configurar desde el Panel de Sistema). El servidor audiovisual hará uso de la librería libre Gstreamer para conformar el stream de datos, y del códec libre FLAC. Ello instrumentará una potente solución libre, ya que nos permitirá manejar audio de elevadísima calidad (hasta 192KHz de frecuencia de muestreo). También incluye soporte para altavoces Sono.

La manera más conveniente par instalar el servidor Mkchromecast en Ubuntu 16.10 o superiores es utilizar la Terminal.

Para ello abrimos una con Ctrl+Alt+T e ingresamos los comandos de organización necesarios. Existe toda una plétora de versiones precompiladas para Ubuntu 16.10 y superiores. y distintos sistemas operativos (incluyendo Debian), y la elección del mismo dependerá enteramente de nuestra configuración particular de sistema. Asumiendo que contamos con Ubuntu 16.10 o superiores, podríamos querer descargar una versión genérica preparada para ALSA. En tal caso, debemos ingresar los siguientes Comandos de Organización.

cd ~ ;

sudo apt update ;
sudo apt install pip git python2.7 python-pip python-pyqt5 python3-pyqt5 lintian pavucontrol ffmpeg avconv python-flask python-psutil python-setuptools python-mutagen python-gi vorbis-tools sox lame flac faac opus-tools libav-tools
;
wget https://github.com/muammar/mkchromecast/releases/download/0.3.7/mkchromecast_0.3.7-1_all.deb ;
sudo dpkg -i mkchromecast_0.3.7-1_all.deb ;
sudo apt install -f ;

El sistema nos indicará que falta alguna paquetería requerida (sobre todo, python-pychromecast), y nos ofrecerá instalarla presionando la tecla s. Una vez hecho esto, se instalará adecuadamente.


En cambio, si contamos con Ubuntu 16.04LTS, hemos de realizar un trabajo más complejo y compilar específicamente el paquete para nuestro sistema. Lo podremos hacer con los comandos:

git clone https://github.com/muammar/mkchromecast.git

...acto seguido crearemos un archivo de texto que denote las dependencias requeridas para la compilación. Podremos hacerlo con el comando:

nano requerimientos.txt

...a este archivo en blanco le pegaremos el siguiente contenido:

Flask==0.12.1
netifaces==0.10.4
psutil==5.2.2
requests==2.13.0
mutagen==1.37
PyChromecast==0.8.1
setuptools==35.0.2
PyQt5==5.8.2
gi==1.2
soco==0.12


...y guardamos el archivo y salimos del editor GNU Nano por medio de Ctrl+o y Ctrk+x. A continuación seguiremos instalando las dependencias requeridas por medio de la utilidad de paquetería Python, el PIP:

sudo -H pip install protobuf ;
sudo -H pip install --upgrade protobuf ;
sudo -H pip install -r requerimientos.txt ;

wget http://ftp.us.debian.org/debian/pool/main/p/protobuf/python3-protobuf_3.0.0-9_amd64.deb ;
sudo dpkg -i python3-protobuf_3.0.0-9_amd64.deb ;
wget wget http://ftp.br.debian.org/debian/pool/main/p/pychromecast/python3-pychromecast_0.8.0-1~exp1_all.deb ;
sudo dpkg -i python3-pychromecast_0.8.0-1~exp1_all.deb ;
wget https://github.com/muammar/mkchromecast/releases/download/0.3.7/mkchromecast_0.3.7-1_all.deb
sudo dpkg -i mkchromecast_0.3.7-1_all.deb

sudo apt-get -f install

Pues bien, como dije, Mkchromecast 0.3.7 agrega la posibilidad de transmitir video desde la computadora al dongle conectado a una TV cercana a través de su puerto HDMI.

Esta función tiene un inconveniente: la transmisión de video sólo opera desde la Terminal, y de momento no está incorporada en la applet. Afortunadamente, es excepcionalmente sencilla de usar desde la terminal una vez que configuramos todo.

En primer lugar nos aseguramos de asociar nuestro dongle Chromecast con la aplicación Mkchromecast, empleando la applet del panel superior de Mkchromecast (podremos encontrarla en el menú Aplicaciones / Sonido y Video / MKCromecast). También podremos lanzar la applet desde la terminal ingresando:


cd ~/mkchromecast
python mkchromecast.py -t

Esto dispondrá el ícono la applet en el panel superior.

Procederemos a asociar nuestro dongle por primera vez. Debemos hacer clic con el botón derecho del ratón sobre el ícono de la applet y elegir la función "Buscar un Dongle Chrome Cast" ("Search for Chrome Cast Dongle"). Al cabo de unos segundos debería aparecer el mismo en la lista, al cual debemos seleccionar y completar el procedimiento siguiendo las instrucciones de la pantalla. Una vez completado el procedimiento de emparejamiento, la applet nos permitirá sin más trámite emitirle al dongle archivos de audio, usando la opción "Transmitir canción" ("Song Casting"). También podremos controlar el volumen del dispositivo, configurar la calidad de audio entre las preferencias, etc. Estas acciones conviene hacerlas, por facilidad, desde esta applet gráfica.

Ahora bien, si queremos enviar un archivo de video al dongle, debemos asegurarnos de cerrar esta applet del panel superior a fin de que la misma no interfiera con la funcionalidad de video que lanzaremos desde la terminal. Para ello, hacemos clic con el botón derecho del ratón sobre su ícono y elegimos la opción Quit.

Ahora trabajaremos desde la terminal para hacer uso de la funcionalidad de video. Suponiendo que queremos transmitirle al dongle el archivo video.mp4, simplemente abrimos una terminal con Ctrl+Alt+T y ejecutamos el siguiente comando de organización:


cd ~/mkchromecast/
mkchromecast --video -i "/ruta/al/video.mp4"

...con esto el sistema codificará y transmitirá dicho contenido audiovisual, y si tenemos la TV configurada para ver la entrada HDMI correspondiente al dongle Chromecast, el contenido audivisual se reproducirá en ella. A su vez, la terminal nos informará datos de status de la reproducción con la siguiente pantalla. Podremos interrumpir el proceso con q o Ctrl+c.



En caso de que necesitemos especificarle un codificador específico, también podremos hacerlo:

mkchromecast --video -i "/ruta/al/video.mp4" --encoder-backend ffmpeg

¿Que sucede si deseamos ver un video Matroska (extensión .mkv) con subtítulos? El Justicialismo ha pensado en todo, el programa puede reproducir Matroskas directamente, y simplemente agregando la variable --subtitles y le indicamos un archivo de subtítulos de formato .srt.

mkchromecast --video -i "~/Vídeos/ejemplo.mkv" --subtitles ~/Vídeos/subtitulo.srt

Si deseamos transmitir un fichero de video disponible desde una fuente en línea, podremos utilizar la variable --source-url e indicar la dirección URL del video:

mkchromecast --source-url http://186.33.226.132/vod/smil:content/videos/clips/35931.smil/playlist.m3u -c mp4 --volume --video

También podríamos reproducir con facilidad radios digitales. Por ejemplo
  
mkchromecast --source-url http://192.99.131.205:8000/pvfm1.ogg -c ogg --volume

También podremos transmitir videos de YouTube también, pero hemos de tener en cuenta que esta funcionalidad primero descargará el video de YouTube a nuestro equipo, y una vez que la descarga haya finalizado y el video se encuentre localmente en nuestro equipo, recién entonces el video se transmitirá al dongle. Por ejemplo:

mkchromecast -y https://www.youtube.com/watch?v=nmLio3SNYPU --video

Desde ahora en más, toda vez que emitamos contenido audiovisual a través de Chromecast podremos gritar al cielo un estruendoso ¡Viva Perón!.

No hay comentarios:

Publicar un comentario