Jueves, 21 de febrero de 2013 (Hace 11 dias)

Al poco de tener el Android te das cuenta de una limitación importante: al descargar un programa este se instala en la memoria del teléfono, que es escasa (unos 150Mg en mi caso) y solo unas pocas aplicaciones se pueden mover a la tarjeta SD (2Gb en mi caso), que es más generosa. El resultado es predecible, a los 4 días la memoria del teléfono está saturada.
No tenía ganas de andar rooteando el teléfono recién estrenado así es que controlé un poco qué/donde instalaba y arreglado. En cambio la solución es muy sencilla y viene de las Android SDK publicadas por Google y un programita llamado ADB. No hay que saber coreano ni tener el teléfono rooteado para hacer lo siguiente.

Descargar Android SDK

En la página de Google http://developer.android.com/intl/es/sdk/index.html, de la sección SDK Tools only descarga el archivo ZIP para tu sistema operativo (Mac, Windows, Linux) (los siguientes pasos los hice para Linux, pero veréis que son muy sencillos y no debería haber ningún problema repitiéndolos en cualquier otro sistema), en mi caso es android-sdk_r21.1-linux.tgz.
Extrae el archivo comprimido y entra en la carpeta android-sdk-linux/tools. Ejecuta android y te aparecerá una ventana como la siguiente

SDK AndroidSDK Android

De la lista de herramientas que te ofrece a instalar selecciona para instalar Android SDK Platarform-tools (si estás en Windows creo que necesitarás también Google USB Driver, al final).
Instala los paquetes.


Montar unidad en modo depuración

Una vez hechos el paso anterior tendrás una nueva carpeta dentro de la anterior android-sdk-linux, llamada plataform-tools y en ella una aplicación adb (android debugger builder).

Sigue leyendo…

Jueves, 7 de febrero de 2013 (Hace más de 2 semanas)

V4l2loopback es un módulo para el kernel linux que llevaba tiempo buscando. Desde hace ya años vengo usando su versión obsoleta para V4L (y seguiré usando todavía bastante) y que permite acceder a un stream de vídeo de algunas de las webcams que tiene “secuestradas” Motion.
Hacía tiempo que busca la versión V4L2 pero aunque encontré algunos proyectos interesantes (este es el más desarrollado) por una cosa o por otra no acaban de funcionar. Mira tu por donde encontré un módulo que funciona perfectamente probando la aplicación Droidcam para el telefono.

Nota: aunque las anotaciones siguientes están probadas y comentadas para Linux (opensuse 11.4) todo es usable tanto en Windows como Mac, teóricamente.

Droidcam es una aplicación para Android que permite usar el teléfono como webcam innalambrica. Activas la cámara del teléfono y accediendo a ella desde el ordenador usarla para emitir videoconferencias (Skype) por ejemplo. Funciona sorprendentemente bien y es un esquema muy sencillo: Al lanzar Droidcam en el movil se inicia un servidor en el teléfono que se pone a la escucha tras mostrarnos una http://ip:puerto de conexión. A continuación iniciamos una mini-aplicación de escritorio que tras indicarle la referida http://ip:puerto de nuestro movil conecta con el teléfono, inicia la cámara y comienza a descargar el streaming de vídeo de su cámara volcandolo al dispositivo virtual de nuestro ordenador (/dev/video0 , por defecto).
Una vez hecho esto solo tenemos que decirle a Skype (u cualquier otra aplicación) que conecte con /dev/video0 para emitir la imagen captura desde el móvil como si una webcam innalámbrica se tratase.

Este dispositivo virtual /dev/video0 se crea en el momento que cargamos el módulo v4l2loopback
sudo modprobe v4l2loopback
y este módulo podemos descargarlo desde la web del desarrollador de Droidcam, solo es necesario descargar y hacer
make && sudo make install

¿que para que sirve v4l2loopback?
pues básicamente para reutilizar el streaming de vídeo de algún dispositivo ó archivo en otro dispositivo o archivo. Podemos, por ejemplo, volcar el contenido de una webcam pública rtmp://… en un /dev/video3 local y acceder a él como si se tratase de un dispositivo propio ó bien emitir en skype una película AVI de vídeo como si fuese nuestra webcam o hacer un streaming en nuestra web con nuestro álbum de fotos del viaje. En definitiva jugar de forma indefinida con un flujo de vídeo manipulando y aplicando efectos.
yuv4mpeg_to_v4l2 < /tmp/tuberia & mplayer /home/usuario/mis-películas/Skyfall.avi -vf scale=320:240 -vo yuv4mpeg:file=/tmp/tuberia
La líneas anteriores hacen uso de yuv4mpeg_to_v4l2 que podéis descargar y compilar desde aquí y lo que hacen es volcar a un archivo fifo temporal una película y a continuación pasar este streaming a un dispositivo que yuv4mpeg_to_v4l2 reconoce como gestionado por el módulo v4l2loopack (por eso no hay que indicar /dev/video0 en línea) y desde vide0 es ya accesible para otros programas. Un método identico al que ya usamos aquí y que podriamos usar para coger un streaming de internet y volcarlo como si fuese nuestra webcam.

Conectando la cámara del teléfono con Droidcam y v4l2loopback y accediendo a ella desde el escritorio con mplayer para mostrar lo que captura la videocámara conectada a /dev/video9 conseguimos un bonito bucle de pantallas.

Domingo, 27 de enero de 2013 (Hace más de 1 mes)

En realidad el blog está preparado para dispositivos móviles (tabletas, teléfonos) desde hace ya tiempo, pero solo en teoría. Instalé el plugin WordPress Mobile Edition que aplica un tema (skin) diferente al blog cuando se detecta que el visitante está usando algún dispositivo mobil para acceder al blog y que adapta los contenidos a una resolución y a una descarga de datos más pequeña. El problema es que teniendo el blog tan hackeado a todos los niveles el aspecto era descuidado ya que se aplicaban estilos y funciones que fuera de la “piel standard” no funcionan.

Lo voy solucionando. He incluido un par de funciones que buscan imágenes en los apuntes y dependiendo de donde procenden (flickr/google por ahora) las reemplaza por su versión de resolución baja.
La url para Flickr sigue más o menos este esquema (más o menos porque ha cambiado en los últimos años por lo que fotos antiguos tendrán otro patron)
http://farm1.staticflickr.com/93/245363225_5d9407692f_m.jpg
En la url de Flickr la última m define el tamaño de la imagen, las opciones son (de menor a mayor) si no recuerdo mal: s,t,m,b,z,o.
La siguiente expresión regular me permite reemplazar las imágenes publicadas en el blog y reemplaza su link a la galería por un enlace a una imágenen mediana:
(<a[^>]*>)?(<img[^>]*)(http:\/\/farm[0-9]\.static\.?flickr\.com\/[0-9]*\/)([0-9]*_)([0-9a-zA-Z]*)(_[a-z])?\.(jpg|png)([^>]*\/?>)(<\/a>)

Idem para las imágenes alojadas en los servicios de Google/Picassa/Blogspot, el patrón vendría a ser algo como: Sigue leyendo…

Jueves, 27 de diciembre de 2012

Tengo un script que descarga a intervalos la última imagen satélite a gran resolución de la página de la NASA y la coloca en el escritorio. De forma esporádica el servidor web devuelve una imagen en negro ó con un área de la península en negro, no hay datos del satélite, imagino. Obviamente como imagen no valen nada, pero ¿como detectar automáticamente que una imagen es negra en uno 50%,80% o 90% y así poder desecharla?
Con Imagemagick hay un truquillo
if [ $(convert imagen.jpg -resize 64x64\! txt:- | grep black | wc -l) -gt 2048 ]; then echo "La mitad de la imagen es negra"; fi

Es decir: reescalamos la imagen a 64×64 (4096 píxels) y convirtiendolo a texto (txt:- ) contamos aquellos que son negros (blanco, amarillo, ponga usted el RGB que quiera), si son más de 2048 (50%) más de la mitad son negros y la imagen se desecha, fácil ¿no?

Lunes, 1 de octubre de 2012

Acabo de terminar y publicar una extensión para Firefox: Firefox2Bash Contexto (solo Linux/Mac). Es una sencilla extensión con una función muy simple: remitir datos de los elementos del navegador a un script en BASH desde donde ejecutar acciones según el contexto.

Funcionamiento

Crea un script bash con este contenido:
#!/bin/sh
kdialog --msgbox "Localizacion es $1\nElemento es $2\nDatos es $3\nid es $4\nclase es $5"
guardalo como /home/tu-user/bin/firefox2bash.sh.
Hazlo ejecutablechmod +x /home/tu-user/bin/firefox2bash.sh

Instala la extensión desde su página en Addons Mozilla, reinicia el navegador. Una vez instalado y reiniciado Firefox abre en este Herramientas > Complementos, busca en tu lista de complementos Firefox2Bash Contexto y pulsa en Preferencias, entra la ruta al script anterior : /home/tu-user/bin/firefox2bash.sh

Sigue leyendo…

Viernes, 21 de septiembre de 2012

Ya hace tiempo mostré un método mediante el plugins Motion de Cinelerra para estabilizar/amortiguar los cabeceos y vibraciones de una secuencia de vídeo. Este tipo de aplicaciones se ha ido extendiendo y es raro el software de edición/reprodución de vídeos que no dispone de su propio estabilizador de imagen (incluso Youtube ofrece al usuario que publica un vídeo la posibilidad de estabilizar una secuencia aplicando las modificaciones en tiempo real prácticamente).

Este nuevo método tiene la ventaja de no necesitar interfaz de cálculo. Apenas son un par de órdenes y un tiempo de render, lo cual permitiría facilmente incluir la orden en el menú de contexto del ratón de tal manera que cada vez que nos interese simplemente click-derecho-sobre-el-icono -> Estabilizar, por ejemplo.

En este fragmento del vídeo que colgué el otro día se puede ver la secuencia original, modificada y la comparación del efecto obtenido al grabar una secuencia a mano y después de estabilizar.

Carga retrasada de youtube

Sigue leyendo…

Miércoles, 29 de agosto de 2012

Probando Firefox15 tuve que hacer un par de cambios en el script default_browser que ya comenté por aquí hace un tiempo. Os refresco la memoria que seguro que viene bien con este calor.

El concepto es sencillo: un script, al que llamaremos default_browser, instalado en /usr/bin y al que todas las aplicaciones del escritorio apuntan como navegador por defecto. Este script lo que hace al ser solicitado es comprobar si hay algún navegador corriendo ya en el escritorio, si lo hubiera le pasa a este navegador la url que se desea abrir y en caso de no haberlo ejecuta el navegador marcado como favorito de la lista de navegadores predefinidos. Lo resumiremos en:

Un navegador para gobernarlos a todos,
un navegador para encontrarlos,
un navegador para atraerlos a todos
y atarlos en las tinieblas.

El objetivo no es más que evitar que se abra otro navegador cuando ya tenemos uno en marcha algo que personalmente me resulta especialmente antipático. Si hago click en un enlace en Choqok y ya tengo abierto un navegador (konqueror, opera, chrome, firefox) pues no me abras otro…

El contenido tendréis probablemente que adaptarlo a vuestra máquina, nombres y rutas de ejecutables ó incorporar otros navegadores. Mis correcciones han venido dadas porque en ocasiones el ejecutable del Firefox era firefox-bin, firefox.sh ó simplemente firefox, igual que en Chrome que en ocasiones es chrome ó google-chrome.
#!/bin/sh
CHROME_BIN="/usr/bin/google-chrome"
FIREFOX_BIN="/usr/bin/firefox"
KONQUEROR_BIN="/usr/bin/konqueror"
PREFERIDO=$CHROME_BIN
if [[ "$(pidof -x $KONQUEROR_BIN)" ]] ; then
echo "Encontrado Konqueror"
PREFERIDO=$KONQUEROR_BIN
OPCIONES=""
fi
if [[ "$(pidof -x $FIREFOX_BIN)" ]] ; then
echo "Encontrado Firefox"
PREFERIDO=$FIREFOX_BIN
OPCIONES="-new-tab"
fi
if [[ "$(pidof -x $CHROME_BIN)" ]]; then
echo "Encontrado Chrome"
PREFERIDO=$CHROME_BIN
OPCIONES=""
fi
echo "Preferido es $PREFERIDO"
$PREFERIDO $OPCIONES "$@"

Simplemente guarda el contenido de arriba en un archivo, por ejemplo /usr/bin/default_browser, hazlo ejecutable ( chmod +x /usr/bin/default_browser ), después define en tu sistema este script como navegador predeterminado ( kcmshell4 componentchooser ) y todo el resto de aplicaciones.

GeoIp es una aplicación/base de datos desarrollada por MaxMind que permite a partir de la IP de un ordenador obtener su ubicación geográfica a nivel de país o incluso ciudad (Over 99.5% on a country level and 78% on a city level for the US within a 40 kilometer radius.).
Existe una versión comercial y una gratuita distribuida bajo licencia Creative Commons y que se compone de dos archivos, el más elemental (GeoIP.dat 1,3Mg) nos permite obtener el país de origen, el más completo (GeoLiteCity.dat 21Mg) la ciudad donde está registrada dicha IP.

La fórmula más sencilla para instalarlos sería hacer algo como:
wget -N -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget -N -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gzip -d GeoIP.dat.gz
gzip -d GeoLiteCity.dat.gz
mkdir /var/lib/GeoIP
mv GeoLiteCity.dat /var/lib/GeoIP/GeoIP.dat
mv GeoLiteCity.dat /var/lib/GeoIP/GeoLiteCity.dat


Cliente GeoIP

Una vez instalado estas dos archivos solo necesitaríamos un cliente que consulte dicha base de datos y los tienes disponibles en los lenguajes más habituales: C, mod_Apache, PHP, JAVA, Javascript, Ruby, etc. Tanto los anteriores archivos DAT como los clientes los he instalado en openSuse 11.4 usando el repositorio Opensuse GEOIP para evitar compilar el módulo Apache en el que estaba interesado.

Una vez instalados los archivos .dat y los binarios, para hacer una consulta bastaría hacer en una consola
~> geoiplookup -f /var/lib/GeoIP/GeoLiteCity.dat 183.203.16.8
~> GeoIP City Edition, Rev 1: CN, 22, Beijing, N/A, 39.928902, 116.388298, 0, 0

Sigue leyendo…

Miércoles, 25 de julio de 2012

Carga retrasada de youtube

De vez en cuando me ponía algún sketch del espacio que Stephen Fry y Hugh Laurie tenían en la televisión inglesa, A bit of Fry and Laurie, pero el otro día y en vista del inminente desembarco PP-deportivo-orgullo-nacional en RTVE me puse a descargar una generosa lista de vídeos para visionarlos tranquilamente en TV. La verdad es que nos estuvimos riendo como hacía tiempo que no lo haciamos con el humor ácido y a ratos surrealista esta pareja de cómicos, tanto que me puse a a terminar de descargar los casi 180 vídeos que youtube dice que hay de “Fry Laurie Subtitulado“.
A continuación un método para descargar cómodamente los 180 vídeos de youtube (o cualquier otro listado de vídeos) en formato mp4 (o flv si no está disponible)>/p>

Descargador: youtube-dl

Youtube-dl es un script en python que al pasarle una url de youtube descarga el archivo de vídeo de más calidad disponible. Tiene muchas opciones, la única que suelo usar es -l (usar el título como nombre de archivo). Asi es que descargamos la aplicación youtube-dl se instala (no tiene ni instalador, simplemente guardar, copiar a ~/bin/youtube-dl.py y hacer ejecutable chmod +x ~/bin/youtube-dl.py). Sigue leyendo…

Cuaderno de campo es un blog desarrollado y mantenido por Trebol-a y en el que escriben Trebol-a, Miguel, Merche y Mónica
Si quieres saber algo más sobre los autores acude a la página acerca-de, si quieres contactar con alguno de nosotros hazlo a través de contactar ó de Google+

Creative Commons: Todo el contenido de la web (imágenes, textos, vídeos, a excepción de aquellas obras de otros autores enlazados por Cuaderno de Campo) se acoge a los términos expresados en la licencia Creative Commons