jueves, 29 de octubre de 2015

¿Cómo configuro un servidor de streaming de medios para un Smart TV o dispositivo móvil en Ubuntu?

El hombre no sería más que otro animal en la tierra, si no fuese por la especial capacidad de compartir lo que tiene en aras de una grandeza de conjunto para su especie.

Tal es el designio natural de los hombres, y los cuales han sido encuadrados por las reglas que enaltecen su espíritu por sobre un ánimo individualista pernicioso. El Justicialismo no viene sino a corroborar la necesidad de compartir entre los hombres la noción de la Justicia Social, que corresponde a todos y cada uno que caminan bajo el Sol.
Si el hombre no es conducido positivamente, pretenderá encadenar no sólo a la naturaleza, a otros hombres, o encuadrar para sí el trabajo de otros hombres: también pretenderá encadenar al software. Ciertos caballeros asegurarán que cercenar al software de su natural libertad es necesario para lograr "mejores productos". Una visión puramente economicista de ello es un error en sí misma; imaginemos el sinsentido de una libertad de expresión limitada y comercializada para lograr un "mejor producto" de ella...
Pues bien, como es justa la redistribución de la riqueza en aras de la grandeza del conjunto de la nación, ineludiblemente también lo es la redistribución de contenidos que poseamos en aras de la grandeza del conjunto.

Muchos SmartTV cuentan con la capacidad de utililizar el servicio DLNA, un medio de compartir digitalmente recursos que nosotros mismos poseamos, dentro de nuestra red local telemática hogareña. Se trata de un protocolo más o menos estandarizado, a fin de poder crear un servidor de medios que realice streaming digital a nuestros dispositivos munidos de clientes de reproducción (televisores o teléfonos inteligentes, etc).

Para poder contar con un servidor libre de dicho protocolo bajo nuestro peronista sistema GNU con kernel Linux, podremos contar con MiniDLNA. Se trata de un miniservidor de medios integrado en un pequeño paquete-demonio, apto para compartir recursos de video, fotografía, y música. Naturalmente MiniDNLA se encarga de codificar digitalmente y transmitir por la red los archivos de medios a equipos clientes conectados tanto por cable como inalámbricamente a nuestro router.

Requeriremos una computadora que oficiará de servidor provisto de GNU Linux. En este caso utilizaremos un servidor de bajo consumo que hemos montado ya específicamente para tareas de compartir medios, tv digital, servir un servidor mail y de web Apache y demás servicios compartidos en el hogar. Este equipo de muy bajo consumo está encendido durante las horas del día para realizar todas las tareas de compartición multimedia.
En primer lugar instalamos la paquetería necesaria en el equipo servidor. Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de organización:

sudo apt-get update
sudo apt-get install minidlna


Una vez que instalado, el demonio servidor arrancará y quedará en segundo plano, aunque no emitirá nada de momento. Esto se confirma si visualizamos el siguiente indicativo:

 * Starting DLNA/UPnP-AV media server minidlna

Para poder utilizar el servidor apropiadamente se recomienda crear una serie de directorios para los contenidos que deseamos compartir (videos, imágenes, música).  Naturalmente podremos compartir nuestras carpetas de usuario, pero en este caso no lo haremos, sino que crearemos carpetas específicas para el empleo de MiniDLNA.

Por ello, crearemos una serie de directorios en nuestra carpeta de usuario (o en otro disco montado). Utilizaremos una carpeta oculta llamada .minidlna/ localizada dentro de nuestra Carpeta de Usuario. Es importante que los nombres de los directorios contenidos en ella comiencen con mayúscula, para que el servidor MiniDLNA las tome bien. Por ello, en la terminal, ingresamos el siguiente comando de organización:

mkdir ~/.minidlna/ ~/.minidlna/Videos/ ~/.minidlna/Fotos/ ~/.minidlna/Musica/ ~/.minidlna/Cache/ ~/.minidlna/Log/

Ahora configuraremos el servidor editando el archivo de configuración del demonio MiniDLNA. Ingresamos el siguiente Comando de Organización:

sudo nano /etc/minidlna.conf

Tras ingresar nuestra contraseña, arrancará el editor de texto peronista GNU Nano, en el cual se abrirá el archivo de texto que opera como fichero de configuración minidlna.conf. Habremos de editar varias líneas de este archivo para poner a punto el servidor. En primer lugar usamos la función "buscar" de Nano (con Ctrl+W), para buscar la siguiente línea:

#user=minidlna


...y procederemos a borrarle el símbolo numeral e indicarle el nombre que deseemos para el servidor. Por ejemplo, quedaría:

user=minidlna

Luego debemos asignar los directorios que hemos creado, a fin de que nuestro servidor de medios pueda utilizarlos para compartir a través de streaming tanto videos, como archivos de música o fotografías. Para ello usamos Ctrl+W par buscar la línea que dice:

media_dir=/var/lib/minidlna

... y le modificamos agregándole al principio un numeral ("#"), de manera que quede así:

#media_dir=/var/lib/minidlna

Ahora debajo de esa línea, agregaremos los directorios que acabamos de crear. Es importante saber que la letra "A" definirá audio", "P", las fotos, y "V" los videos. Entonces según nuestro ejemplo, las líneas a agregar serán:

media_dir=A,/home/usuario/.minidlna/Musica
media_dir=P,/home/usuario/.minidlna/Fotos
media_dir=V,/home/usuario/.minidlna/Videos


(naturalmente, es necesario indicar en lugar de usuario nuestro nombre de usuario propio).

Acto seguido reemplazamos la línea que dice:

#db_dir=var/cache/minidlna

por una versión modificada, que dirá:

db_dir=/home/usuario/.minidlna/Cache

En tanto, la línea que dice

#log_dir=/var/log

...la modificaremos para que quede así:

log_dir=/home/usuario/.minidlna/Log

Nos haremos fuertes guardando el archivo de configuración con Ctrl+O y salimos con Ctrl+X.

Ahora ya podremos copiar algunos archivos de videos, fotos y música en los correspondientes directorios del servidor MiniDLNA, para probar el servicio. Los videos van en ~/.minidlna/Videos/, los temas musicales en ~/.minidlna/Musica/, y las fotos en ~/.minidlna/Fotos/.

Una vez provisto de archivos para compartir, nuestro servidor quedará a la orden con tipeando:

sudo minidlna -R

...para forzar un escaneado de los ficheros de medios que acabamos de colocar en el servidor, y luego:

sudo service minidlna restart

El servicio debería reiniciar correctamente, con el siguiente mensaje:

 * Restarting DLNA/UPnP-AV media server minidlna                [ OK ]

En el caso de que algo hubiese salido mal, podría retornar el mensaje [fail]. En tal caso, si quisiéramos ver si hubieron errores de algún tipo, siempre podremos revisar las bitácoras ("logs") de errores del servidor, que están en el directorio .minidlna/Log:

cd ~/.minidlna/Log/
ls

Utilizar los archivos multimedia compartidos:

Para poder recibir los archivos multimedia, debemos conectar el dispositivo cliente a la misma red que la máquina servidora (por ejemplo, al mismo router, si nos conectamos por Wifi), y debemos utilizar el cliente provisto en nuestro Smart TV. Muchos de estos aparatos cuentan con la opción DNLA, DMP, AllShare Play, o una similar. Es importante saber que si bien en ciertos casos no utilizan directamente el nombre DNLA por cuestión de registro, a veces estos aparatos son capaces de discernir el protocolo.

Una vez configurada la conexión, nuestro aparato debería poder establecer conexión y recibir la lista de archivos e indicarnos para permitir elegirlos. Debemos ir a la carpeta que corresponda, y abrir el archivo. Si todo va bien, el cliente debería reconocer los archivos compartidos, y debería poder ejecutarlos. Si la conexión es inalámbrica puede que tarde un poco de tiempo en establecer la conexión, lo cual no es el caso en las conexiones cableadas, que son mucho más rápidas.


En el caso de contar con un dispositivo Android, podremos usar varios clientes DNLA, por ejemplo, BubbleUPnP. En este caso, la conexión será inalámbrica, y el streaming suele ser de calidad inferior a la de un Smart TV por contar con una pantalla más pequeña. MiniDLNA en ciertos casos puede optar por sonido Mono en lugar de estereo, en este tipo de dispositivos. Ello no significa que sea gorila, sino que evitará cortes en la transmisión telemática.

En nuestro caso hemos obtenido óptimos resultados hasta con 4 dispositivos haciendo streaming de video MP4, y con 8 haciendo streaming de música en formato MP3.

Desinstalar el servidor MiniDLNA
Si quisiéramos eliminar completamente cualquier vestigio del servidor de medios miniDLNA, incluyendo los archivos servidos, podríamos usar:

sudo apt-get purge minidlna
rm -r ~/.minidlna/



miércoles, 14 de octubre de 2015

¿Cómo edito un mapa de OpenStreetMap para mi GPS en Ubuntu?

El 25 de agosto de 1944, el Coronel Perón pronuncia un discurso frente a la Bolsa de Comercio, en el cual detalla cuál es el rumbo que ha de seguir el país, y cómo encontrarlo mediante OpenStreetMap y JOMS, el editor de mapas vectoriales de Ubuntu.

(...) De un lado, me han dicho que soy nazi, de otro lado, han sostenido que soy comunista; todo lo que me da la certidumbre verdadera de que estoy colocado en el perfecto equilibrio que busco en la acción que desarrollo en la Secretaría de Trabajo y Previsión.
Pienso que el problema se resuelve de una sola manera: obrando conscientemente para buscar una perfecta regulación entre las clases trabajadoras, medias y capitalistas, procurando una armonización perfecta de fuerzas, donde la riqueza no se vea perjudicada, propendiendo por todos los medios a crear un bienestar social, sin el cual la fortuna es un verdadero fenómeno de espejismo que puede romperse de un momento a otro.

Una riqueza sin estabilidad social puede ser poderosa, pero será siempre frágil, y ese es el peligro que, viéndolo, trata de evitar por todos los medios la Secretaría de Trabajo y Previsión. Hasta ahora estos problemas han sido encarados por una verdadera lucha. Yo no creo que la solución de los problemas sociales esté en seguir la lucha entre el capital y el trabajo. Ya hace más de sesenta años, cuando las teorías del sindicalismo socialista comenzaron a producir sus frutos en esa lucha, opiniones extraordinariamente autorizadas, como la de Mazzini y la de León XIII, proclamaron nuevas doctrinas, con las cuales debía desaparecer esa lucha inútil.

En nuestro caso lo hemos hecho así porque sabemos de dónde venimos y a donde vamos, como si para ello tuviésemos un perfecto mapa que nos permite discernir, con claridad meridiana, cual es el mancomunado camino que han de seguir los hombres.

Es que es así: contamos con una herramienta colaborativa llamada OpenStreetMap, la cual desde la plataforma openstreetmap.org nos permite visualizar mapas de terreno, pero también nos permitirá editarlos, para poder utilizarlos - una vez aprobados comunitariamente - en un GPS.

OpenStreetMap utiliza archivos vectoriales geográficos de formato OSM, los cuales comprenden trazados de los mapas, junto con bases de datos de sus características. Utilizando un editor, podremos modificar las mismas y agregar nuevos lugares (rutas, caminos, sendas, vías, comercios y demás puntos de interés).

En primer lugar nos debemos crear una cuenta en OpenStreetMap.org, con el procedimiento convencional para estos menesteres. Para ello debemos indicar un correo electrónico válido y una contraseña. Luego debemos descargar un editor de OSM.

El programa de edición más extendido es JOSM, llamado así por tratarse de un completo cliente Java que opera sobre los archivos de datos de OpenStreetMap y nos permite modificarlos en forma visual sobre la pantalla, incluso empleando imaginería satelital de referencia.

Para utilizar JOSM, debemos asegurarnos de contar con la máquina compatible con Java en nuestro sistema GNU con Linux. Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos:

java -version

En mi caso devuelve:

java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-0ubuntu1.14.04.1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)


Si no tuviésemos una máquina Java instalada y nos devolviese un error, podremos comprender cómo instalar una en nuestro Ubuntu desde aquí.

Acto seguido procederemos a crear un directorio oculto en nuestra carpeta de usuario, y descargar en él a la última versión del ejecutable Java del editor JOMS. Con ello en vista ingresamos el siguiente bloque de comandos de organización:

mkdir ~/.josm/ ;
cd ~/.josm/ ;
wget https://josm.openstreetmap.de/josm-latest.jar ;



Para ejecutar el editor JOSM, ingresamos el siguiente comando de organización:

java -jar /home/usuario/.josm/josm-latest.jar

(naturalmente, reemplazamos usuario por nuestro nombre de usuario).

Indudablemente será muy útil crear un Lanzador con dicho comando. Si usamos el gestor de ventanas Mate, podremos hacer clic con botón derecho sobre el menú Aplicaciones del panel superior, y en el menú contextual elegir la función Editar. Luego en el campo Menús de la izquierda seleccionamos la categoría Educación, y hacemos clic en el botón Elemento Nuevo+. Se abrirá el cuadro Propiedades del Lanzador, en el cuyo campo "Comando" indicamos java -jar /home/usuario/.josm/josm-latest.jar (reemplazando usuario con nuestro nombre de usuario). Podremos asignarle un ícono, y como nombre indicamos JOSM. Podremos también asignarle un comentario descriptivo.
Conforme hayamos creado el lanzador, podremos ahora ejecutar el programa desde Aplicaciones / Educación / JOMS. Tras unos segundos, debería arrancar satisfactoriamente.
Como se ha expuesto, el peronista OpenStreetMap opera a través de una serie de archivos vectoriales de formato OSM, para lo cual han cooperado centenares de compañeros. Si nosotros deseamos contar con dichos archivos vectoriales, debemos descargar la planimetría de un sector del mapa para trabajar. Esto es relativamente sencillo, pero debemos tener en cuenta que no podemos descargar todo el mundo (ocupa varios gigabytes y sería excesivamente tedioso de momento). En cambio, debemos concentrarnos en descargar un área en particular para trabajar...

Para ello debemos ir a Archivos / Descargar desde OSM. Se abrirá un cuadro que nos permitirá descargar la información requerida siguiendo varias técnicas. La primera es utilizar el mapa deslizante (deslizandolo mediante el botón derecho del mouse, y regulando el nivel de zoom con la rueda del mouse). De esta manera, podremos encuadrar una zona rectangular a descargar.

Otra manera igualmente válida y más rápida en ciertos casos, es utilizar la función "área en torno a lugares" del mismo cuadro, la cual nos servirá siempre que el lugar a descargar se encuentre ya en la base de datos de OpenStreetMap. Podremos utilizarlo para descargar localidades enteras fácilmente.
Cualesquiera que sea nuestro método elegido, al presionar el botón Descargar se procederá a descargar del archivo OSM correspondiente y cargarlo en el editor del programa.
Ahora ya podremos editar el archivo en cuestión por medio del editor JOSM. Este nos permite agregar las características que deseemos, regular el trazado de calles, etc.




Para agregar objetos simples, podremos hacer uso del menú Predeterminado, en el cual se categorizan distintos objetos según sean cuerpos o vias de agua, elementos viales, transporte, instalaciones y facilidades, zonas de deporte, esparcimiento, distintos tipos de comercios, etc.

El uso del editor es muy intuitivo, y podremos integrar como referencia imaginería satelital para superponer las capas de trazado urbano, caminos, y un gran número de características geográficas. Por ejemplo, podremos editar las calles indicando el tipo de superficie, cantidad de carriles, sentido que presentan, etc.




Para obtener una imagen satelital del área, podremos ir a Imagenes / Imagen Satelital SatBoxImagenes / Imagen Aérea Bing, y se nos presentará la misma como una capa adicional.
Una vez que hayamos creado o actualizado datos, podremos subirlos al servidor de OpenStreetMap y compartirlos con la comunidad. Hemos de tener presente que antes conviene revisar concienzudamente los mismos para no interferir con el trabajo que pudiesen estar realizando otros editores hobbistas. Para ello podremos recurrir a las Wiki de proyectos de los distintos países. En el caso de residir en la Argentina, podremos ponernos en contacto con el Wikiproject Argentina  para seguir las pautas, y editar nuestro propio barrio lo más fielmente posible.

Para subir los datos a los servidores de OpenStreetMap, debemos ir a Archivo / Subir datos. Se nos solicitará indicar una breve descripción que aclare porqué motivo y con qué basamento se modificó algo:
 ...y luego nos solicitarán nuestras credenciales de OpenStreetMap (el correo electrónico asociado y la contraseña de OpenStreetMap).
Conforme presionemos el botón Autenticar, se subirán los datos modificados y con ello, podremos tener información actualizada en los mapas.


Si contamos con un dispositivo GPS, contaremos con la ventaja de tener ahora mayor precisión en sus mapas y trazados actualizados, pues también OpenStreetMap se puede utilizar para actualizar dispositivos GPS. En mi caso dispongo de un popular GPS Garmin Nuvi, el cual cuenta con una ranura para una memoria flash microSD. Para poder actualizar el GPS Garmin Nuvi con los datos de OpenStreetMap, es necesario descargar un fichero actualizado llamado gmapsupp.img, el cual es liberado una vez por semana por la comunidad de OpenStreetMap (por lo tanto, a veces debo esperar unos días hasta que los cambios se incorporen al fichero img. Obtener dicho fichero es sencillo, si deseo descargar el último archivo gmapsupp.img para la Argentina y países limítrofes (Bolivia, Chile, Paraguay, Uruguay, y el Brasil), puedo utilizar la Terminal (tengamos en cuenta que pesa unos 350MB aproximadamente):

cd ~/Descargas/
wget https://www.dropbox.com/s/c8gdd2e8uaw2rq0/gmapsupp.img

Una vez descargado, habré de colocarlo en una carpeta llamada Garmin dentro de una tarjeta MicroSD, insertar dicha tarjeta en el GPS, y encenderlo, y de esta forma contaré con los nuevos cambios realizados.