"Después del juego es antes del juego"
Sepp Herberger

martes, 13 de octubre de 2015

SimpleScreenRecorder para Debian Wheezy

Un compañero profesor me pidió buscar un software sencillo para grabar las clases capturando toda la actividad en pantalla al usar la pizarra digital en un vídeo que luego podría editar para publicarlo o revisarlo.

Estuve buscando y encontré como opción mas sencilla y completa el SimpleScreenRecorder, que incluso permite grabar el sonido. Yo lo probé en mi Linux Mint y funcionaba estupendamente. El problema vino cuando se dió cuenta de que había que hacerlo funcionar en Debian Wheezy de 64bits, que es el sistema que tenemos en las aulas.

La primera opción fue buscar versiones antiguas para Ubuntu o Mepis, pero los paquetes encontrados daban errores con las versiones de los paquetes dependientes al instalarlos en nuestro Debian Wheezy.

Podría haber intentado probar versiones de otras distribuciones Linux, convirtiéndolas con alien, pero había otra opción más divertida: compilar desde los fuentes. Los afectados de fetichindows (neopalabro formado por la fusión de conceptos "fetichismo" y "Windows") que odian-temen Linux  dicen que los linuxeros estamos todo el día compilando programas desde que amanece hasta que se pone el sol. Pues vamos a darles la razón por 10 minutos.

Tenemos este manual  para compilarlo para Debian Jessie, así que no debe ser muy distinto hacerlo para Wheezy. Vamos allá, haremos todo con un usuario regular que tenga acceso sudoer (luego podemos quitar dicho acceso). Los pasos son:

$ cd
$ wget https://github.com/MaartenBaert/ssr/archive/master.tar.gz
$ tar xfvz master.tar.gz
$ sudo dpkg --add-architecture i386
$ sudo apt-get update 
$ sudo apt-get install build-essential pkg-config qt4-qmake libqt4-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libasound2-dev libpulse-dev libjack-jackd2-dev libgl1-mesa-dev libglu1-mesa-dev libx11-dev libxfixes-dev libxext-dev libxi-dev g++-multilib libx11-6 libxext6 libxfixes3 libxfixes3:i386 libglu1-mesa:i386
$ cd ssr-master 
$ ./simple-build-and-install 

Bueno, pues me dio algunos errores en la primera compilación. Así que hice lo que pone en la página indicada:

$ cd /usr/lib/i386-linux-gnu
$ sudo ln -s libGL.so.1 libGL.so
$ sudo ln -s libGLU.so.1 libGLU.so
$ sudo ln -s libX11.so.6 libX11.so
$ sudo ln -s libXext.so.6 libXext.so
$ sudo ln -s libXfixes.so.3 libXfixes.so
$ sudo ldconfig
$ cd ~/ssr-master
$ ./simple-build-and-install  

De nuevo me dió error. Viendo mejor el error de compilación me encuentro con que se queja de que no encuentra un tipo de datos llamado AVPixelFormat. Una breve búsqueda en Google me dice que AVPixelFormat es de Jessie, que en Wheezy es PixelFormat, asi que busco en el código todas las apariciones:

$ cd ~/ssr-master/src
$ grep -irl AVPixelFormat * 

Y voy fichero por fichero fuente cambiando AVPixelFormat por PixelFormat. Podría haberlo hecho automáticamente mediante sed, pero tampoco eran muchos cambios. Una vez acabado, lanzamos de nuevo el proceso:

$ cd ~/ssr-master
$ ./simple-build-and-install  

Y ahora si compilaba. Al acabar nos pide contraseña del usuario para ejecutar con sudo la instalación y tachán... en unos instantes está todo instalado.

Indagando un poco sobre la instalación veo que ha copiado los siguientes ficheros:

  • El ejecutable: /usr/bin/simplescreenrecorder 
  • Las librerias:  /usr/lib/i386-linux-gnu/libssr-glinject.la y /usr/lib/i386-linux-gnu/libssr-glinject.so, haciendo un "ldconfig -n /usr/lib/i386-linux-gnu" después.
  • El fichero .desktop: /usr/share/applications/simplescreenrecorder.desktop, haciendo un update-desktop-database después para añadirlo al menú del entorno gráfico (en mi caso XFCE).
Y con esto ya está instalado. Desde el menú o desde terminal podemos ejecutar simplescreenrecorder  y se nos carga la ventana de inicio para empezar el asistente de grabación de Escritorio:


Despúes me planteé copiarlo a otras máquinas. Como todavía no me he puesto en serio a hacer paquetes Debian un poco mas complejos de lo normal, con dependencias y scripts de postinstalación  (a ver si me pongo a aprenderlo y así puedo contarlo aquí) pensé en hacer un script bash de instalación para automatizarlo un poco, pero antes me dió por copiar el ejecutable /usr/bin/simplescreenrecorder  a una máquina cualquiera y probarlo allí: carajo, funcionaba. No tengo ni idea de para que son las librerías (aunque supongo que será para integrar la funcionalidad de grabación en aplicaciones que compilemos nosotros), pero no son necesarias: con el ejecutable es suficiente.

Aquí va un enlace al ejecutable para Debian Wheezy de 64 bits, por si alguien quiere instalarlo de una forma rápida y sucia. Para ejecutarlo solo habría que abrir un terminal y lanzarlo desde allí. Si da algún error seguramente sea porque no encuentra alguna librería (fichero .so) que necesite el programa y no la tienes en tu sistema. La solución es sencilla: averigua a que paquete pertenece buscando en Internet e instálala.

Bueno, pues otro día seguimos con mas cosas.


No hay comentarios:

Publicar un comentario