En alguna que otra ocasión ya he escrito sobre como convertir una vídeo en una imagen animada con formato GIF, sin embargo, en esta ocasión el tema es crear la imagen animada de una grabación de pantalla.
Indudablemente la ventaja de este asunto es la de poder crear una sencilla ayuda al usuario mediante imágenes animadas.
¿Cómo realizar un screencast de tu escritorio en una imagen GIF?
Byzanz
Byzanz es una sencilla herramienta de la línea de comandos que permite grabar el escritorio en una imagen animada con formato GIF. Aunque esta aplicación está desatendida, es decir, hace años que nadie trabaja sobre ella, la versión que se encuentra en los repositorios funciona perfectamente para los propósitos que nosotros tenemos.
Uso
La orden para utilizar byzanz es byzanz-record. Para probarlo solo tendrás que ejecutar la siguiente orden en un emuladro de terminal,
byzanz-record -d DURATION –delay=DELAY -x X-COORDINATE -y Y-COORDINATE -w WIDTH -h HEIGHT FILENAME
Así, los parámetros a modificar son los siguientes,
- DURATION. Define la duración de la grabación en segundos.
- DELAY. Este el tiempo que trascurre desde que ejecutamos la orden hasta que comienza a grabar.
- X-COORDINATE, Y-COORDINATE. Define las coordenadas x e y, del área de la pantalla que se va a grabar.
- WIDTH, HEIGHT. Define el tamaño del área a grabar.
- FILENAME. Es el archivo en que se grabará la animación de nuestro escritorio.
El problema es que definir las coordenadas puede resultar algo tedioso, y sobre todo, es probable que no aciertes exactamente con lo que tu quieres grabar.
Una solución es precisamente crear tu propio script, con un diálogo que te permita introducir la duración de la grabación, y por otro lado definir el área a grabar marcando una ventana.
Un ejemplo de script es el que puedes descargar o copiar de la siguiente página y que reproduzco a continuación,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#!/bin/bash # AUTHOR: (c) Rob W 2012, modified by MHC (https://askubuntu.com/users/81372/mhc) # NAME: GIFRecord 0.1 # DESCRIPTION: A script to record GIF screencasts. # LICENSE: GNU GPL v3 (https:// www.gnu.org/licenses/gpl.html) # DEPENDENCIES: byzanz,gdialog,notify-send (install via sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd) # Time and date TIME=$(date +"%Y-%m-%d_%H%M%S") # Delay before starting DELAY=10 # Standard screencast folder FOLDER="$HOME/Pictures" # Default recording duration DEFDUR=10 # Sound notification to let one know when recording is about to start (and ends) beep() { paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga & } # Custom recording duration as set by user USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1) # Duration and output file if [ $USERDUR -gt 0 ]; then D=$USERDUR else D=$DEFDUR fi # Window geometry XWININFO=$(xwininfo) read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO") read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO") read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO") read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO") # Notify the user of recording time and delay notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds." #Actual recording sleep $DELAY beep byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFrecord_$TIME.gif" beep # Notify the user of end of recording. notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif" |
Guarda este script como byzanz-gui (o cualquier otro nombre, según mas te convenga) y dale permisos de ejecución,
chmod +x byzanaz-gui
Por último, solo te queda ejecutarlo y ver que todo funciona correctamente. Para ello, en un emulador de terminal, ejecuta la siguiente orden,
./byzanz-gui
Esto te mostrará una ventana en la que deberás introducir la duración de la grabación en segundos,
Una vez pulsado el botón aceptar el script te informará de que va a empezar a grabar en 10 segundos y de la duración de la grabación
Lo siguiente es que el script te informará de que se ha iniciado la grabación y la duración de la grabación, según el valor que hayas introducido previamente,
Una vez terminado todo el proceso, te mostrará una notificación, informándote de ello, y de donde ha guardado la grabación y con que nombre…
Conclusiones
Lo cierto es que esto da mucho de si, solo es cuestión de dedicarle un poco de tiempo para conseguir un script que se adapte perfectamente a tus necesidades, incluso seleccionando el área del escritorio que queremos grabar. Por supuesto que otra opción sería la de realizarlo en vídeo y posteriormente convertirla a imagen con formato GIF.
Más información,
Cuando el entorno predeterminado para Ubuntu era GNOME2 existía un applet de panel que funcionaba de manera excelente con byzanz. Me pregunto porque nadie ha querido realizar una evolución de dicho applet para GTK3.
En fin, muchas gracias por la información. Atareao…
¿Recuerdas cono se llamaba? ¿Web? Entiendo que será sencillo hacer un indicador…
Saludos y gracias
Byzanz – applet, literalmente. Te hablo de Lucid que ambos tuvimos en nuestro AA1. Incluso creo recordar que era dependiente y se instalaba automáticamente junto con Byzanz.
Aquí he encontrado su código:
http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/byzanz/lucid/files/head:/src/
Acabo de encontrar un repositorio en GitHub con su código portado en GNOME 3, pero no lo he probado:
https://github.com/threedaymonk/byzanz/blob/master/src/org.gnome.ByzanzApplet.panel-applet.in.in
Y en este enlace de Ask Ubuntu, dan muchas posibilidades para realizar un screencast con GIFs:
http://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast
Gracias a ti por compartir como lo haces, Atareao.