Java Cache Viewer: dónde se esconden los jnlp

Como dice más o menos la Wikipedia, Java Web Start es un framework desarrollado por Sun Microsystems quer permite iniciar directamente desde el navegador aplicaciones Java preparadas específicamente (siguen el protocolo Java Network Launching Protocol – JNLP – ). A diferencia de los applets Java, las aplicaciones Web Start no se ejecutan dentro el navegador, por lo que las duras restricciones de seguridad del sandbox de los applets no se aplican en este caso (aunque este nivel de seguridad también puede configurarse para las aplicaciones JNLP).

Dicho lo anterior a modo de introducción, ayer mismo necesité ejecutar una aplicación Web Start, en concreto iRiverter. Es una mini aplicación Java que permite convertir, a golpe de ratón, un archivo de vídeo .AVI al formato necesario para distintos players de vídeo (en concreto, también para Creative Zen, mi nueva «mascota»). Todo muy bonito y muy bien, pero hoy, cuando he querido ejecutarla de nuevo, me ha surgido la duda. ¿Tengo que estar conectado a Internet para ejecutarla? ¿descargarla otra vez y volver a ejecutarla? No tiene mucho sentido. Además, seguro que está cacheada. Y efectivamente, la gente de SUN lo pensó muy bien. Y no sólo eso, sino que nos permite ver todas las aplicaciones JNLP que hemos descargado, ejecutarlas offline y si queremos, hasta crear un icono de acceso directo a la aplicación cacheada en local. ¿Cómo? Yo lo he hecho a través del Java Cache Viewer, pero seguro que hay alguna otra opción mejor (espero comentarios).

$ /opt/jdk1.6.0_10/bin/ControlPanel

Pulsamos ahora, dentro de la sección «Temporary Internet Files» en el botón «View…». Se abrirá el «Java Cache Viewer». En el imagen vemos que tengo disponible iRiver, la aplicación que me interesa (y que descargué ayer).

Ahora, con el botón derecho sobre iRiver:

Vemos que tenemos la opción de ejecutar la aplicación Offline, y también de instalar un acceso directo (con icono correcto) en el escritorio. +1 para Java Web Start…

Adobe AIR en Linux

Adobe AIR es un entorno de ejecución multi-plataforma que permite construir y ejecutar aplicaciones RIA (Rich Internet Applications) usando Adobe Flash, Adobe Flex, HTML, o Ajax, que pueden ser ejecutadas desde el navegador o bien como aplicaciones locales (sin navegador) en el escritorio. Cada día se está oyendo hablar más de aplicaciones AIR, y teniendo la posibilidad de probarlas en Linux, creo que es interesante aprender a hacerlo. Vamos a instalar el entorno y a continuación una aplicación, a través de un ejemplo paso a paso.

Lo primero es descargar el runtime de la página principal de Adobe AIR para Linux . A continuación, debemos darle permisos de ejecución al archivo.

$ chmod a+x adobeair_linux_a1_033108.bin

Y finalmente instalar:

$ sudo ./adobeair_linux_a1_033108.bin

Se creará un acceso directo en el menú Aplicaciones/Otros/Adobe Air.

Ahora podemos añadir al sistema aplicaciones AIR de forma muy sencilla. Por ejemplo, instalaremos Adobe AIRTube (una pequeña aplicación para descargar – y previsualizar – vídeos FLV de YouTube al escritorio). Obtendremos AirTube desde aquí. Lo guardaremos en el Escritorio. Para comenzar su instalación basta con hacer doble click sobre el archivo. Se abrirá la siguiente ventana:

Pulsamos en Install, y a continuación:

indicamos que queremos accesos directos a la aplicación y que el directorio de instalación sea /opt . Ahora es como en Windows (Siguiente/Siguiente/Siguiente). Nos pedirá password de administración (nuestro password si somos sudoers) y listo. Se lanzará la siguiente ventana (chromeless):

Desde ahí, arrastramos la URL de cualquier vídeo al widget AirTube y comenzará la descarga al pulsar el botoncito de la derecha (triángulo blanco), con barra de progreso incluída. El fichero caerá en el escritorio y se visualizará en el propio Airtube.

ffmpeg, codecs, libmp3lame, libxvid y otras hierbas

Quiero convertir un video descargado de YouTube a formato AVI (xvid, mp3). Lo primero: eso de mp3 es tabú para el conversor ffmpeg que viene de serie en Ubuntu. Hay que instalar el ffmpeg-sin-miedos del repositorio Medibuntu.

Una vez hecho, pasemos a la conversión:

$ ffmpeg -i pocoyo_bed_time.flv -s 320x240 -r 24 -acodec libmp3lame -vcodec libxvid -vtag XVID -f avi -qscale 3 -g 300 -deinterlace -ab 56k -ar 24000 -async 1 pocoyo_bed_time.avi ... .... Unknown codec 'libmp3lame'

Vaya por dios. ¿No hay soporte libmp3lame en ffmpeg? Pero ¿no era eso lo que precisamente aportaba la versión de Medibuntu?

Veamos:

juanan@morton:~/Desktop/zen$ ffmpeg -version FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. configuration: --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg --enable-libgsm --enable-dc1394 --disable-debug --enable-libmp3lame --enable-libfaadbin --enable-libfaad --enable-libfaac --enable-xvid --enable-x264 --enable-liba52 --enable-amr_nb --enable-amr_wb --enable-shared --prefix=/usr libavutil version: 1d.49.3.0 libavcodec version: 1d.51.38.0 libavformat version: 1d.51.10.0 built on Jul 29 2008 18:21:25, gcc: 4.2.3 (Ubuntu 4.2.3-2ubuntu7) ffmpeg SVN-rUNKNOWN libavutil 3212032 libavcodec 3352064 libavformat 3344896

Pues en el configure se ve claramente –enable-libmp3lame . ¿Qué ocurre? Que nos quieren volver locos con los nombres 🙂 Para averiguar el nombre del encoder necesario, hay que realizar el conjuro mágico:

$ ffmpeg -formats | grep -i mp3 </CODE</p> <p>Ahí, entre otras cosas, veremos:</p> <p>DE mp3 MPEG audio layer 3 DEA mp3 D A mp3adu D A mp3on4</p> <p>La D indica "decoder". La E indica "encoder". La A no sé qué indica :-O Es decir, podemos codificar (encode) si usamos la opción "-vcodec mp3 " y no "-vcodec libmp3lame" como estábamos haciendo.</p> <p>Si lo probamos:</p> <p><CODE> juanan@morton:~/Desktop/zen$ ffmpeg -i pocoyo_bed_time.flv -s 320x240 -r 24 -acodec mp3 -vcodec libxvid -vtag XVID -f avi -qscale 3 -g 300 -deinterlace -ab 56k -ar 24000 -async 1 pocoyo_bed_time.avi ... Unknown codec 'libxvid'

El error es otro… y ya sabéis cómo resolver. La orden final correcta sería: $ ffmpeg -i pocoyo_bed_time.flv -s 320x240 -r 24 -acodec mp3 -vcodec xvid -vtag XVID -f avi -qscale 3 -g 300 -deinterlace -ab 56k -ar 24000 -async 1 pocoyo_bed_time.avi

Automatizar la descarga de enlaces que cumplan patrón

Quiero descargar todos los enlaces de la página http://packages.medibuntu.org/pool/non-free/f/ffmpeg-debian/ que contengan i386 en el nombre. Por supuesto, de forma automática (si repites más de 2 veces el mismo gesto, y crees que en el futuro lo volverás a hacer, hay que automatizar):

juanan@morton:/tmp/fmpeg$ lynx -nonumbers  -dump http://packages.medibuntu.org/pool/non-free/f/ffmpeg-debian/| grep i386  | sed -e ‘s/^ *//’  | awk ‘{print $3}’ | wget -B «http://packages.medibuntu.org/pool/non-free/f/ffmpeg-debian/» -i –

lynx: navegador en modo texto

-dump : interpretar el HTML de la página y devolverlo por salida estándar

-nonumbers: mostrar los enlaces sin numerar

sed -e ‘s/^ *//’  : left trim  (recortar espacios en blanco, por la izquierda)

awk ‘{print $3}’ : quedarme con la tercera columna

wget -B URL   : URL base desde la que descargar

-i  –  : -i indica que le vamos a pasar un fichero a wget con las URLs de lo que queremos descargar. Como el filtro ya lo hemos hecho, y lo hemos enganchado a wget por un pipe, el fichero en sí no existe, sino que llega por tanto por entrada estándar (a través del pipe). Receta que usaré en más de una ocasión.

NavarParty 6: anímate a participar

X. Eizmendi nos invita a participar en la NavarParty 6: «En Pamplona se celebra desde hace 5 años una party pequeña y familiar. A diferencia de la Euskal en la que los de control están dentro de cajones y no los ves, aquí hasta puedes hablar con ellos si es necesario. Como fue la Euskal hace años, en la pantalla de la navar se pueden ver videos curiosos, graciosos, sexys y frikis a todas horas. Hay concursos de Fast 2D, retoque fotográfico, música, wild compo, Date el bit (concurso parecido al friki test) y muchos más. Además de competiciones de juegos, talleres, conferencias…

Y a todo eso hay que añadirle el Hack it! Un concurso que existe desde la primera edición y que desde la Navarparty 2 hasta ahora tiene un formato muy parecido al de la Euskal (está inspirado en él).

Si te gustó el Hack it de la Euskal, no lo dudes, ¡Navarparty 6 te espera!

NOTA: Apúntate rápido, las reserves de sitios comienzan el 18 de agosto. La party se celebra del 18 al 21 de septiembre.»