Grabación de videos con FFmpeg sobre X11

domingo, 15 de junio de 2008

Además de las funciones de codificación de FFmpeg, esta herramienta puede grabar vídeos sobre la pantalla gráfica de Linux (xorg), a continuación detallo como hacerlo sobre una distribución Debian Etch.

Para empezar necesitamos instalar FFmpeg, una buena fuente de este paquete es el repositorio de Debian Multimedia, para que funcionen el repositorio sobre nuestro linux tenemos que agregar un parte lineas en el archivo /etc/apt/source.list, una vez agregadas procedemos actualizar la base de datos de apt.

Agregar las siguientes lineas al archivo source.list
deb http://www.debian-multimedia.org etch main
deb-src http://www.debian-multimedia.org etch main

Actualizar apt
apt-get update

Continuando con la instalación, en Debian el paquete de FFmpeg no viene con soporte de grabación sobre el servidor gráfico, así que tenemos que parchar el paquete FFmpeg para que soporte la opción X11 grabbing, de tal manera que ahora se agrega un paso más a la instalación. Nos ubicamos sobre un directorio temporal y seguimis los siguientes pasos:

* Instalación de dependencias de FFmpeg
apt-get build-dep ffmpeg

* Instalación de devscrips para la compilación
apt-get install devscripts

* Descarga del código fuente de FFmpeg
apt-get source ffmpeg

Del paso anterior se creará un directorio del código fuente, dentro ubicar el directorio debian y editar el archivo rules (debian/rules). En este archivo agregar la opción de compilación -enable-x11grab dentro de la sección configure-stamp cerca a la linea 40. En mi archivo queda como sigue:

[cortado]
--enable-libogg --enable-libgsm --enable-x264 --enable-liba52 \
--enable-libtheora --extra-cflags="$(CFLAGS)" --cc="$(CC)" --enable-swscaler \
--enable-x11grab


Luego hay que ubicarnos sobre el directorio del código fuente y ejecutar el comando debuild. Después este comando finalizará arrojando unos mensaje de error de claves gpg que hay que ignorarlos, además generará los nuevos paquetes de ffmpeg en un directorio superior, Para finalizar los instalamos con:

dpkg -i *.deb

Para probar los nuevos cambios ejecutamos ffmpeg.

ffmpeg -f audio_device -i /dev/dsp -f x11grab -s 640x480 -i :0.0 out1.avi

Este comando capturará en un vídeo lo que acontece en la pantalla del Linux, además capturará el audio y tomará la resolución de 640x480.

La ventaja de FFmpeg es que se podría capturar la pantalla completa a cualquier formato de video y audio que soporte FFmpeg, además el consumo del CPU es poco en comparación a Istanbul o a Xvidcap.


Aquí un ejemplo de lo que se puede hacer.

Referencias:
Páginas de documentaciónde FFmpeg
Páginas man de FFmpeg
Consejos de codificación de FFmpeg