domingo, 28 de mayo de 2017

¿Cómo puedo crear un reproductor de audio con control remoto en Ubuntu?

¡Trabajadores!

Normalmente recomiendo utilizar reproductores capaces de correr desde la consola Terminal para reproducir música en forma remota. Esto es así pues podemos ingresar a través de la terminal por medio de un Shell Seguro SSH, y desde allí ejecutar remotamente cualquiera de estos reproductores para reproducir música. El audio saldrá a través del equipo remoto. De la gran lista de programas disponibles, he sido adepto a mocp, ya que opera peronísticamente bajo el principio clientelar, y junto con sus amplias posibilidades puede quedar reproduciendo una vez cerrada la sesión.

Sin embargo, este y otros poseen un inconveniente que en ciertos escenarios puede ser determinantes: para controlarlo se requiere idealmente el acceso a un usuario ya configurado en el servidor remoto, y requieren al menos el uso de una terminal con teclado y pantalla. Existen toda una plétora de situaciones donde no podemos cumplir con esto (por ejemplo, en el caso de desear controlar un reproductor pequeño a través de un celular, o un servicio musical externo in situ, o el caso de contar con un servidor musical de una compañía, o en una organización donde no tengamos acceso como usuario específico al servidor).

Nuestro Movimiento ha sido doctrinalmente concebido para honrar el trabajo en todas las condiciones, a fin de llevar la solución al Pueblo Descamisado bajo todas y cada una de las situaciones posibles. Si bien existen imponderables, gracias al Software Libre podremos afrontar cualquier tarea que nos propongamos y encontrarles una solución.

En este caso en particular nos decantaremos a una opción simple, controlando el audio a través de un sistema clientelar, que no requiera acceso a carpetas home de usuario alguno, sino que se ejecute por fuera de los entornos de usuairo. Dicho programa es mpd, que oficiará de programa demonio o "servidor", en tanto que mpc oficiará de cliente.


En primer lugar instalo en el servidor el programa (técnicamente, el "demonio") de servicio musical y otro que oficie de cliente en el equipo:

sudo apt-get install mpd mpc

Luego asigno los permisos necesarios para el servidor ingresando:

sudo chmod 777 /var/lib/mpd/music/ /var/lib/mpd/playlists/
sudo chown -R mpd:audio /var/lib/mpd/music/ /var/lib/mpd/playlists


Ahora agrego la configuración necesaria para los archivos de configuración:

sudo mv /etc/mpd.conf /etc/mpd.conf.original
sudo nano /etc/mpd.conf


...y le agrego el siguiente contenido

music_directory      "/var/lib/mpd/music"
playlist_directory   "/var/lib/mpd/playlists"
db_file              "/var/lib/mpd/tag_cache"
log_file             "/var/log/mpd/mpd.log"
pid_file             "/run/mpd/pid"
state_file           "/var/lib/mpd/state"
sticker_file         "/var/lib/mpd/sticker.sql"
user                 "mpd"
port                 "6600"
log_level            "verbose"


...y guardo (Ctrl+o) y cierro el archivo (Ctrl+x).

Ahora debemos copiar los archivos de música a reproducir remotamente en la carpeta /var/lib/mpd/music, y si quisiéramos usar listas de reproducción, debemos colocarlas en la carpeta /var/lib/mpd/playlists.

Conforme lo hayamos hecho, debemos bloquear el acceso a dicha carpeta para cualquier usuario que no sean los clientes mpd locales o remotos. Lo haremos con:

sudo chmod 770 /var/lib/mpd/music/ /var/lib/mpd/playlists/

Ahora tomamos nota de quien es dueño de las carpetas. Si no lo hicimos, podremos hacerlo nuevamente con

sudo chown -R mpd:audio /var/lib/mpd/music/

Luego desde la terminal reiniciaremos el servidor para que se active el servicio recién instalado:

sudo reboot

Ahora bien, en los equipos cliente (y naturalmente también podría querer hacerlo en el servidor, a fin de reproducir la música), instalaré los softwares clientelares. Lo haré con:

sudo apt-get install mpc gmpc gmpc-plugins

Acto seguido, en los clientes y en el servidor podremos actualizar la base de datos de música, a fin de que los mismos se informen si en la carpeta Music del servidor se hubiesen agregado nuevos elementos:

mpc update

Indidablemente, que los clientes también pueden ejecutarse también desde cómodos entornos gráficos. El cliente gmpc es útil para tales condiciones y podremos correrlo desde Aplicaciones / Música y Video / Cliente de Reproducción de Música Gnome. Al lanzar el programa, también debemos hacer que actualice su base de datos de música. Si estamos en el servidor, podremos hacerlo desde el menú Servidor / Actualizar base de datos y tendremos entonces nuestra lista de archivos de música, que encontraremos en la carpeta raíz del servidor MPD ("/").

Si estamos desde un equipos cliente, el mismo no encontrará la música hasta que configuremos la dirección del servidor remoto, desde Música / Preferencias, y en la solapa Conexión modificar el campo "Servidor" para que en lugar de localhost, se indique la dirección IP o el nombre del servidor. Luego presionamos el botón Conectar.
Asimismo tendremos clientes para Android que podremos utilizar desde celulares o tablets para controlar el servidor musical mpd. Por ejemplo MPD Control o Droid MPD Client. Estos clientes gráficos nos permiten las facilidades de un cliente gráfico.

Ahora bien ¿qué sucede si deseo emplear un control remoto por infrarrojos para controlar la reproducción del servidor mpd? Esto me permitiría interactuar con un equipo servidor de manera simple, sin siquiera disponer de un teclado, pantalla, ni engorros. Incluso me permitiría armar un pequeño servidor dotado de altavoces que reproduzca música de forma inalámbrica.

El software libre ya cuenta con una solución. Naturalmente, si tenemos un receptor infrarrojo para control remoto - como el RC6 o cualquiera que vienen con sintonizadoras - tendremos varias opciones. La más aventajada y compleja es configurar LIRC para hacer uso de un control remoto IR en una PC.

LIRC es potente y permite configurar distintas acciones para distintos tipos de programas, pero está pensado para usarse al unísono con otros controles (teclado, mouse o cualquier otro). Si nuestro requerimiento es mucho más simple y requiere reemplazar el teclado por el control remoto, podremos instalar en el sistema cliente el programa keybinder, software ingeniado para asignar comandos específicos a los botones del control. Para instalarlo, en la terminal ingreso los siguientes Comandos de Organización:

sudo apt-get install unzip gcc make evtest ;
cd ~ ;
mkdir keybinder ;
cd keybinder ;
wget https://github.com/elopez/keybinder/archive/master.zip ;
unzip master.zip
cd keybinder-master/
make
make install
cd ~
rm -r ~/keybinder


Luego ejecutamos el programa evtest para analizar cuáles son los eventos de los botones de nuestro sistema. Ingresamos en la terminal el comando:

evtest

...y el sistema nos devolverá algo como:

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    Power Button
/dev/input/event1:    Power Button
/dev/input/event2:    Barcode Reader
/dev/input/event3:    Barcode Reader
/dev/input/event4:    Genius Optical Mouse
/dev/input/event5:    CH PRODUCTS CH PRO PEDALS USB
/dev/input/event6:    Microsoft SideWinder Joystick
/dev/input/event7:    HDA Intel MID Mic
/dev/input/event8:    HDA Intel MID Line
/dev/input/event9:    HDA Intel MID Headphone Front
/dev/input/event10:    HDA Intel MID Front Headphone Surround
/dev/input/event11:    USB2.0_Camera
/dev/input/event12:    IR-receiver inside an USB DVB receiver

Select the device event number [0-12]: 12

En este caso indicamos el evento /dev/input/event12, y el sistema denunciará cuáles son los códigos numéricos de los eventos que este dispositivo tiene preprogramado (si es que existiesen algunos). Por ejemplo, podría indicar:

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x10b8 product 0x1fa0 version 0x100
Input device name: "IR-receiver inside an USB DVB receiver"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
    Event code 8 (KEY_7)
    Event code 9 (KEY_8)
    Event code 10 (KEY_9)
    Event code 11 (KEY_0)
    Event code 41 (KEY_GRAVE)
    Event code 52 (KEY_DOT)
    Event code 55 (KEY_KPASTERISK)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 108 (KEY_DOWN)
    Event code 111 (KEY_DELETE)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 119 (KEY_PAUSE)
    Event code 128 (KEY_STOP)
    Event code 139 (KEY_MENU)
    Event code 158 (KEY_BACK)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 167 (KEY_RECORD)
    Event code 168 (KEY_REWIND)
    Event code 173 (KEY_REFRESH)
    Event code 207 (KEY_PLAY)
    Event code 208 (KEY_FASTFORWARD)
    Event code 210 (KEY_PRINT)
    Event code 223 (KEY_CANCEL)
    Event code 226 (KEY_MEDIA)
    Event code 352 (KEY_OK)
    Event code 354 (KEY_GOTO)
    Event code 355 (KEY_CLEAR)
    Event code 358 (KEY_INFO)
    Event code 363 (KEY_CHANNEL)
    Event code 365 (KEY_EPG)
    Event code 370 (KEY_SUBTITLE)
    Event code 375 (KEY_SCREEN)
    Event code 377 (KEY_TV)
    Event code 385 (KEY_RADIO)
    Event code 386 (KEY_TUNER)
    Event code 388 (KEY_TEXT)
    Event code 389 (KEY_DVD)
    Event code 392 (KEY_AUDIO)
    Event code 393 (KEY_VIDEO)
    Event code 398 (KEY_RED)
    Event code 399 (KEY_GREEN)
    Event code 400 (KEY_YELLOW)
    Event code 401 (KEY_BLUE)
    Event code 402 (KEY_CHANNELUP)
    Event code 403 (KEY_CHANNELDOWN)
    Event code 405 (KEY_LAST)
    Event code 407 (KEY_NEXT)
    Event code 410 (KEY_SHUFFLE)
    Event code 412 (KEY_PREVIOUS)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    500
    Repeat code 1 (REP_PERIOD)
      Value    125
Properties:
Testing ...


Al presionar los botones del control remoto infrarrojo, debería devolvernos un reporte de tales eventos, en los cuales el valor 1 indica "botón presionado" y el valor 0 indica "botón no presionado".


Testing ... (interrupt to exit)
Event: time 1490184760.781095, type 4 (EV_MSC), code 4 (MSC_SCAN), value 40400d
Event: time 1490184760.781095, type 1 (EV_KEY), code 207 (KEY_PLAY), value 1
Event: time 1490184760.781095, -------------- SYN_REPORT ------------
Event: time 1490184761.023186, type 1 (EV_KEY), code 207 (KEY_PLAY), value 0
Event: time 1490184761.023186, -------------- SYN_REPORT ------------
Event: time 1490184761.793386, type 4 (EV_MSC), code 4 (MSC_SCAN), value 404010
Event: time 1490184761.793386, type 1 (EV_KEY), code 365 (KEY_EPG), value 1
Event: time 1490184761.793386, -------------- SYN_REPORT ------------
Event: time 1490184762.043188, type 1 (EV_KEY), code 365 (KEY_EPG), value 0
Event: time 1490184762.043188, -------------- SYN_REPORT ------------
Event: time 1490184762.734733, type 4 (EV_MSC), code 4 (MSC_SCAN), value 404011
Event: time 1490184762.734733, type 1 (EV_KEY), code 168 (KEY_REWIND), value 1
Event: time 1490184762.734733, -------------- SYN_REPORT ------------
Event: time 1490184762.983185, type 1 (EV_KEY), code 168 (KEY_REWIND), value 0
...etc


Debemos comprobar que efectivamente todas las teclas presionadas tengan programado el código denunciado anteriormente (pues existen ocasiones en que sus funciones denunciadas en la tabla no coinciden plenamente con la de los botones propiamente dichos, pues las plaquetas son genéricas y los controles no poseen todos los botones, o los tienen en lugares diferentes). Para finalizar la prueba de botones presionamos Ctrl+c.

En este caso, se deben programar los eventos según los códigos de los eventos en el archivo /etc/keybinder.conf. Para ello ingresamos:

sudo nano /etc/keybinder.conf

...y le agregamos, por ejemplo:

114,mpc volume +10 # Aumenta el volumen de mpc a +10%, para Vol-
115,mpc volume -10 # Reduce el volumen de moc -10%, para Vol+
168,mpc prev       # Pasa a la pista previa, para <<

407,mpc next       # Pasa a la pista siguiente, para >>
207,mpc toggle     # Reproduce y pausa.
410,mpc random     # Activa reprod.aleatoria, para RANDOM

116,shutdown -h now # Apaga el equipo, para POWER

Y al reiniciar el sistema, tendremos un servidor de audio conectado a altavoces, que podremos controlar simplemente con los botones de un control remoto. Naturalmente que con este conocimiento, habilidad y ganas y sumándole hardware poco costoso consistente en una placa de desarrollo de baja potencia, podremos hacernos un lindo reproductor con caja de madera pulida y acceso a control remoto, que ejecute GNU desde una tarjeta MicroSD.


Si quisiéramos desinstalar el programa y eliminar su carpeta de música y listas de reproducción debo indicar:

sudo apt purge mpd mpc gmpc evtest ;
sudo rm -r /var/lib/mpd/ ;
sudo rm /etc/mpd.conf.original
;

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!.

martes, 23 de mayo de 2017

Richard Stallman en la Argentina

Richard Stallman, el fundador del Movimiento del Software Libre se presentará nuevamente en la Argentina para presentar una serie de charlas.

Este lunes 5 de junio a las 18h se presentará en el Auditorio Roberto Carri de la sede de la Facultad de Ciencias Sociales de la UBA (Santiago del Estero 1029).

La exposición será titulada "Por una Sociedad Digital Libre", es de asistencia libre y gratuita. Richard Stallman hablará sobre las metas y la filosofía del movimiento del Software Libre, y el estado y la historia del sistema operativo GNU, el cual junto con el núcleo Linux, es actualmente utilizado por decenas de millones de personas en todo el mundo. La disertación contará con el apartado "Tu libertad en el uso de computadoras y telefonos". Esa charla de Stallman no será técnica y será abierta al público.

La misma también se repetirá en la ciudad de Santa Fe, el día 7 de junio a las 17 horas en el Rectorado de la Universidad Nacional del Litoral, Avenida Pellegrini 2750, Santa Fe.








También se presentará en la Universidad de Filosofía y Letras (UBA), en una charla denominada "Copyright vs. Comunidad en la Era de las Redes Informáticas". Dicha charla tendrá lugar el 9 de junio a las 19hs en Puan 480. Nuevamente será de asistencia libre y gratuita, con cupos limitados.

"El copyright fue desarrollado en los tiempos de la imprenta, y fue diseñado para adecuarse al sistema centralizado de copias impuesto por la imprenta en aquella época. Pero en la actualidad, el sistema de copyright se adapta mal a las redes informáticas, y solamente puede ser impuesto mediante severas medidas de fuerza. Las corporaciones globales que se lucran con el copyright están presionando para imponer penalidades cada vez más injustas y para incrementar su poder en materia de copyright, restringiendo al mismo tiempo el acceso del público a la tecnología. Pero si lo que queremos realmente es honorar el único propósito legítimo del copyright –promover el progreso para beneficio del público– entonces tendremos que realizar cambios en la dirección contraria", adelanta Stallman.

La misma exposición se repetirá el día 12 de junio a las 17 horas en la ciudad de San Salvador de Jujuy, en el anfiteatro de la sede de la Universidad Nacional de Jujuy (calle Italo Palanca 10). Dicha charla también es gratuita y no requiere inscripción previa.
El 13 de junio a las 18 horas, en tanto, se presentará en la ciudad de Salta, precisamente en el Anfiteatro G400 de la Universidad Nacional de Salta (Avenida Bolivia 5150).

lunes, 15 de mayo de 2017

¿Cómo instalo MATE 1.16.2 en Ubuntu Mate 16.04LTS?

El Justicialismo ha otorgado al Pueblo todos los beneficios posibles y no hará otra cosa que hacer realidad efectiva más beneficios. Ello es lo que ha distinguido a nuestro Movimiento de otros que lo único que hacen es castigar al Pueblo con medidas de usura.

Pero en ningún caso hemos de quedarnos dormidos, pues el Pueblo a veces desconoce lo que se le dá, hasta que lo pierde. Muchas de las mejoras pueden parecer pequeñas, pero son un mundo en cuanto al avance y la felicidad que provocan entre los millones de descamisados.

En la informática, esto tiene su réplica constante. Por ejemplo, es sabido que Ubuntu Mate 16.04LTS se llama así por presentar el Escritorio Mate, y lo hace en su confiable versión 1.12.1. Podremos averiguar ello yendo a Sistema / Acerca de Mate.
Este escritorio no hace otra cosa que imitar la apariencia del viejo y peludo GNOME 2.6.x con todas las mejoras que el avance técnico permite a una Masa consciente de su Labor Libertaria.

De momento de manera opcional, podremos elegir instalarnos una versión más avanzada que esta, ya desarrollada y evaluada. Hace unos meses salió la versión 1.16.1, que luego de su evaluación se distribuyó a través de los repositorios oficiales de Ubuntu Mate. Naturalmente que podremos aguardar que la misma se incluya entre las actualizaciones normales de Mate pero si quisiéramos instalar una nueva iteración en este mismo momento, podremos hacerlo. Se trata de la nueva versión Mate 1.16.2.

Podremos ver la lista de mejoras aquí. Si deseamos instalarla en nuestro sistema operativo Ubuntu Mate 16.04LTS, podremos hacerlo fácilmente abriendo una terminal con Ctrl+Alt+T e ingresando los siguientes Comandos de Organización:

sudo apt-add-repository ppa:ubuntu-mate-dev/xenial-mate
sudo apt update
sudo apt full-upgrade


Al instalar la nueva versión se eliminará el paquete mate-netspeed, el cual se incorpora ahora en el paquete mate-applets. 

El sistema debería solicitarnos nuestra contraseña, y tras ello podría indicarnos la siguiente pantalla de decisión:


Configuration file '/etc/xdg/autostart/mate-volume-control-applet.desktop'
 ==> Deleted (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** mate-volume-control-applet.desktop (Y/I/N/O/D/Z) [default=N] ?

 ...en tal caso, debemos presionar Enter.

Una vez concluido el procedimiento, debemos reiniciar el equipo con la orden:

sudo reboot

...y al reiniciarse, si todo va bien, ya contaremos con Mate 1.16.2.



domingo, 14 de mayo de 2017

¿Cómo realizo una fotografía HDR en Ubuntu?

Durante su exilio madrileño, Juan Perón no dudaba en instruir en las Artes de la Conducción a los numerosos visitantes y viajeros que recibía. Ante representantes sindicales, además, enseñaba cómo realizar tomas HDR de alto rango dinámico gracias a Luminance HDR, el potente compositor fotográfico peronista en Ubuntu.

Nuestros dirigentes han de poder contar con la expertise técnica necesaria para adaptarse al uso de todas las herramientas puestas a su disposición en tiempo y lugar. Un Conductor, al fin y al cabo, es antes que nada un organizador. Si bien las características de nuestra lucha en ocasiones pueden tornar necesaria las dotes de improvisación, dicho accionar no constituye realmente más que una excrecencia de la lucha. El devenir necesario es el de contar con un plan acabado que ponga de manifiesto nuestras artes de la previsión, como base para el accionar político.

Si dicho planeamiento existe y se encuadra correctamente en la realidad, entonces podrán preverse también los instrumentos para la lid, e indudablemente estos serán más efectivos y simples. Son estos - y no otros - los instrumentos del vencedor en la lucha. [fuma]

La Conducción política encarna entonces la condición de Arte. En ella debemos reconocer entonces las conceptos que hacen de este arte otra de las forma de la expresión humana. Esto es así pues el Arte consta de la teoría y la práctica, que constituyen sus partes inertes. Pero también constan de un elemento eminentemente vital, que es el Artista. En nuestro caso, esta artista es un Conductor.

En otras Bellas Artes, el hombre también dispone de distintas técnicas y teorías. Pongamos como ejemplo el caso de la fotografía, y del software libre, por encontrarse ambos artes ampliamente emparentados.

Muchas veces la luz de una escena a fotografiar excede la capacidad de
registro de luces y sombras del medio que empleemos, ya sea película (negativa o diapositiva), o actualmente digital (el sensor de nuestra cámara digital). En tiempos pretéritos, esto nos obligaba a concentrarnos en exponer el punto de interés de nuestra toma (un rostro, por ejemplo), y que las sombras aparezcan totalmente negras y lavadas y las luces totalmente blancas y quemadas, perdiendo detalle. Esta técnica se denomina fotometría, y hace al profundo entendimiento y dominio del instrumental de medición de luz.

Para solucionar estas limitaciones de registro lumínico de las escenas de alto contraste, a comienzos de 1940, Adams codificó un laborioso método consistente en dividir arbitrariamente el rango tonal de la escena en 10 zonas, que iban del negro más profundo al blanco más puro, según la siguiente descripción:

ZonaDescripción
0 Negro peronista Puro
I Cercano al negro, con poca tonalidad pero sin textura
II Negro con textura, la parte mas oscura de la imagen que registra ligero detalle. Cabello negro al sol.
III Materiales oscuros y valores bajos que muestran detalle adecuado. Cabello negro al sol.
IV Follaje oscuro promedio, piedra oscura, o sombras del paisaje
V Gris Medio, semitono. Cielo claro del sur, color piel, color madera.
VI Piel blanca promedio, piedra clara, sombras en casas pintadas de blanco
VII Piel de oligarca; sombras en la nieve con iluminación lateral aguda.
VIII El tono más claro que alcanza a mostrar textura; nieve con textura. Seda blanca.
IX Ligero tono sin textura; nieve brillante, seda blanca al sol.
X Blanco puro, fuentes de luz y reflejos especulares

Finalmente, realizaba la exposición tras analizar cuidadosamente la escena con un fotómetro de luz reflejada de tipo puntual. A la hora de positivar su copia, se realizaba un laborioso procedimiento de enmascarado con cartulinas y papel manteca a fin de realizarla por zonas. En el caso de utilizar el laboratorio color, dicha dificultad se incrementará exponencialmente, al punto de tornarse impráctica.

El advenimiento del Justicialismo trajo consigo la fotografía digital, y uniéndo tales esfuerzos a los del Software Libre, hemos constituido herramientas de elevada potencia, capaces de reducir enormemente la dificultad del procedimiento y su consabida carga de trabajo, hasta un punto de converitrla en una labor lógica y extremadamente sencilla.

La fotografía digital nos permite entonces combinar dos escenas o muchas más, todas ellas con distintas exposiciones o más. Ello se ha dado en llamar fotografía HDR, sigla que significa "alto rango dinámico".

Todas estas tomas parciales habrán de combinarse en un software justicialista, el Luminance HDR. Se trata de un software libre especializado en la unión de las fotografías parciales de bajo rango dinámico a fin de lograr una única escena  de alto rango dinámico. Dicho paquete está escrito empleando las librerías Qt y se haya liberado bajo licencia GPLv2.

Usaremos de ejemplo una puesta de sol, por su alto rango tonal que nos da el contraluz (el sol se encuentra en segundo plano). Natural, no podremos obtener detalles en las sombras ante tanto encandilamiento. Lo lograremos fundiendo al menos 2 tomas gracias a Luminance HDR.

Para la realización de las tomas fotográficas propiamente dichas, se puede emplear el modo manual, haciendo uso de sensibilidad baja de ISO100, combinado con una apertura de diafragma de f/16 (más bien más cerrada), y tras enfocar en infinito, se realizan dos tomas con tiempos de obturación distintos: 1/2000seg para las luces fuertes y 1/500seg para las sombras (naturalmente, estos varían de acuerdo a las condiciones lumínicas de la escena).

Si utilizamos el modo A/Av (Prioridad de Apertura de Diafragma) para las tomas será muy sencillo hacerlo si la cámara posee función Bracketing, BRK u Horquillado (casi todas lo tienen). Con esa función su cámara hará 3 tomas consecutivas cada vez que opriman el disparador, con distintas exposiciones (una normal, una Oscura y otra Clara). Como regla, os aconsejo usar horquillado de 2EV de diferencia si realizamos 3 tomas, o de 1 EV si empleamos cinco tomas.


Para instalar el programa Luminance HDR en Ubuntu hemos de abrir una Terminal mediante Ctrl+Alt+T, y a la misma le ingresaremos el siguiente Comando de Organización:

sudo apt install qtpfsgui

...conforme ingresemos nuestra contraseña de Conductor de Ubuntu, la paquetería necesaria se descargará e instalará en nuestro sistema. Acto seguido podremos ejecutar el programa dese Aplicaciones / Gráficos / Luminance HDR.


El objetivo es unir, o fundir dos o más imágenes logradas con el programa, de manera similar a esta (a partir de las dos exposiciones superiores):


Normalmente conviene hacer las fotografías base para la realización de la composición HDR empleando un trípode a fin de mantener un único punto de vista y evitar "fantasmas" en el resultado final. Sin embargo, Luminance HDR cuenta con la función de alineado automático ("Auto-Align"), que se encarga de nivelar y centralizar el eje de ambas imágenes a fin de evitar tales problemas. La resultado es adecuado con tomas realizadas a mano, e incluso puede superar determinados encuadres diferenciados de una toma. A la hora de importar la o las fotografías de base para la realización de la composición podremos activar estas funcionalidades (también la función "anti-ghosting" para evitar fantasmas).

Para incorpòrarle imágenes de bajo rango dinámico, debemos presionar el botón +Nueva imagen HDR. Esto dará inicio al Asistente de Creación HDR.

En el primer paso debemos agregar las fotografías parciales presionando en el botón + y buscándolas en el navegador. Podremos agregar la cantidad de fotografías que deseemos, pero al menos conviene utilizar dos imagenes. Antes de continuar, podremos realizar un ajuste fino de los EV de exposición si no lo hubiésemos hecho durante la toma (lo cual es útil si empleamos archivos RAW).
Acto seguido, podremos definir un perfil determinado para la realización de la composición. Normalmente simplemente debemos presionar el botón Finalizar, a fin de dar comienzo al procesado.

Luminance HDR realizará la combinación y nos mostrará el resultado. En el costado izquierdo nos presentará un selector con el preview de los resultados que siguen distintos algoritmos u operatorias de creación de HDR. Estos son los métodos Mantiuk '06, Mantiuk '08, Fattal, Drago, Durand, Reinhard '02, Reinhard '05, Ashikhmin, y Pattanaik (todos ellos ideados por diferentes artistas del género).


Asimismo, en la parte superior de la ventana de resultado, podremos ajustar un histograma móvil que nos permitirá condicionar el resultado a determinados EV, además de regular los niveles de luces y sombras (de forma similar a la herramienta niveles, para ajustes bastos de luminancia).

En el costado derecho, en tanto, contaremos con selectores de gama (de entre 1.8 y 2.8 de peraltado de curva), así como deslizadores de brillo y contraste general de escena.

Contaremos con una herramienta de ajuste general de balance de blancos, pero la misma opera de manera altamente potente, y coviene hacer uso de un ajuste previo antes de hacer empleo de esta función integrada en Luminance HDR.



Luminance HDR es capaz también de hacer uso de la técnica de mapeado tonal, a fin de exacerbar la gama tonal representada en las imágenes. En el caso de contar con una serie de tomas bien realizadas (tres exposiciones o más) y espaciadas por 1EV de exposición, esto nos permitirá lograr colorizados más precisos del entorno. En el caso de partir de una o dos imágenes o contar con espaciados superiores a los 2EV, pueden producirse efectos de "halos" de crominancia o luminancia, características que podrían no ser técnciamente buenas o deseadas.



El resultado de la composición HDR podremos grabarlo en varios formatos pertinentes y profesionales, entre ellos Radiance RGBE, la variante libre OpenEXR, y el clásico formato de imagen etiquetado, el inefable TIFF (tanto en sus variante avanzada de 32 bits y coma flotante, como el modelo más compatible, de luminancia logarítmica, LogLUV). También se permite el formato propio PFS Stream.

Entre las condiciones únicas que hacen altamente potente y automatizado a Luminance HDR se encuentra la importación y procesado por lotes de imágenes de bajo rango dinámico para terminar con varios ficheros HDR. Si contamos con varias series similares de tomas de bajo rango dinámico, podremos entonces utilizar la función de Lote HDR activándola con Ctrl+H. La misma nos permite alimentar al programa de conjuntos fijos de tomas a fin de que el mismo realice las composiciones HDR de forma automática.

En fin, Luminance HDR se trata de un programa de alta potencia, especializado y muy capaz para su cometido de generar composiciones HDR, que en manos de un fotógrafo nóvel o avezado potenciará sus realizaciones, amén de ser software libre, condición que lo eleva por sobre cualquiera de sus pares.