Archivo de la etiqueta: Gnash

SWF2JPG en Linux

Bueno, realmente esta receta sirve para cualquier plataforma en la que funcionen Gnash y scrot (bonito nombre, LMAO! :-D).

El caso es que ayer me pasé toda la tarde buscando una solución decente para pasar SWFs (ShockWave Flash) a cualquier formato de imagen. Google está repleto de miles de programas cutre-shareware que no funcionan con Wine y la única orientación que veía en los foros de ayuda era usar las swftools, que son geniales, pero no hacen lo que necesitaba (renderizar una animación SWF y sacar un pantallazo de la misma).

Así que pensé: en UNIX se sigue el principio KISS (Keep It Simple, Stupid), cada aplicación pretende hacer pocas cosas y hacerlas bien. Tenemos una aplicación que reproduce SWF desde la línea de comandos y otra que saca pantallazos desde la línea de comandos. Las juntamos con un poco de pegamento shell script y arreglado 🙂

El resultado es un script que hace lo que promete, aunque tiene algunas limitaciones importantes:

  1. Tarda 1 segundo por animación SWF (no es muy lento, pero tampoco es que sea una maravilla).
  2. No te permite hacer nada más con el ordenador mientras se está utilizando (es un segundo por SWF, pero si son muchas… welcome back to the batch-world!!).
  3. Las imágenes generadas tienen la misma resolución que tu escritorio. Si las quieres en otra resolución, cambia la de tu escritorio 😀

Las limitaciones están causadas por el método troglodita para extraer el pantallazo. El script básicamente lanza la animación en pantalla completa, saca el pantallazo y mata el reproductor Flash. Ya sé que no es profesional, pero funciona O:-)

Aquí tenéis el código, quizá a alguien le sea de ayuda:

#!/bin/sh

GNASH="/usr/bin/gtk-gnash"
SCROT="/usr/bin/scrot"
OUTPUTFORMAT="jpg"

if [ $# -ne 1 ]
then
  echo "error, usage: $(basename $0) file.swf"
  exit 1
else
  $GNASH --fullscreen $1 &
  GNASHPID=$!
  $SCROT -d 1 $1.$OUTPUTFORMAT
  kill $GNASHPID
fi

Como podéis observar, es necesario indicar las rutas a Gnash y scrot para que funcione. Si queréis un SWF2PNG o similares, basta con cambiar el OUTPUTFORMAT.

Happy hacking 😉