Graba tu escritorio desde el terminal con FFmpeg
Hace unas horas hemos publicado un artículo en el que os explicábamos cómo convertir un archivo de audio a otro formato (también de audio) con FFmpeg. En ese artículo también explicamos que el framework en cuestión es una herramienta muy potente con la que podemos realizar muchas tareas relacionadas al vídeo y al audio, y también que en otro momento os enseñaríamos cómo grabar la pantalla de nuestro PC con FFmpeg desde el terminal. Ese momento ha llegado y el artículo será este.
Grabar la pantalla con este framework va a ser un poco más complicado que convertir el audio. La dificultad la encontramos en el momento de escribir el comando, puesto que lo que tenemos que recordar es mucho más que poner una orden, una “-i” y dos archivos, el de entrada y el de salida. Además, la manera de hacerlo se ha actualizado debido a que han modificado la orden/herramienta con la que grabaremos la pantalla. Sin más dilación, pasamos a describir los pasos a seguir, que no son otros que los que encontramos en la página oficial del proyecto.
FFmpeg nos permite grabar la pantalla de nuestro escritorio con y sin audio
Como otros programas como VLC o SimpleScreenRecorder, FFmpeg nos permite grabar la pantalla de nuestro escritorio con y sin audio. Además, también nos permitirá grabar solo una porción de nuestro escritorio, algo que sería más sencillo usando una aplicación con interfaz de usuario que nos permitiría seleccionar la región a grabar con el puntero. En cualquier caso, los comandos o pasos a seguir para grabar la pantalla de nuestro escritorio serían los siguientes:
- Como al convertir archivos, nos aseguramos de que tenemos instalado el software necesario. Para ello basta con escribir “ffmpeg” (sin las comillas) en el terminal. Veremos algo como lo siguiente:
- Si aparece algo como lo anterior, pasamos al paso 3. Si no lo está, escribimos lo siguiente en el terminal:
sudo apt install ffmpeg
- Con el software instalado, solo quedarían dos pasos más: iniciar la grabación y pararla. Para iniciarla, escribiremos el siguiente comando.
ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 salida.mp4
- De lo anterior hay que tener en cuenta:
- 1920×1080 el tamaño de la grabación.
- framerate es la cantidad de frames por minuto.
- 0.0 es la región que grabará. Se le puede dar un punto X e Y de inicio para grabar una porción de la pantalla después del símbolo de suma, lo que podría quedar como 0.0+100,200 para una ventana que empezara en el punto X= 100 y el punto Y= 200.
- salida.mp4 es el archivo de salida. Si lo ponemos como en el comando anterior, el archivo se guardará en nuestra carpeta personal con el nombre “salida.mp4”.
- Por último, para parar la grabación presionamos Ctrl+C
Grabar la pantalla con audio
Si lo que queremos es grabar también el audio, los comandos quedarían así:
- Para Pulse Audio:
ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 -f pulse -ac 2 -i default salida.mkv
- Para ALSA:
ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 -f alsa -ac 2 -i hw:0 salida.mkv
Para mejorar la calidad del sonido, lo mejor es cerrar todos los programas que no sean necesarios. En ambos casos, para parar la grabación pulsamos Ctrl+C. Al hacerlo, el vídeo nos estará esperando en nuestra carpeta personal con el nombre que le hayamos configurado, en estos casos “salida.mp4” o “salida.mkv”.
Hay que tener en cuenta el tamaño del vídeo. En los comandos, yo he puesto “1920×1080” porque es el tamaño y resolución de mi pantalla. Lo mejor es que cada uno añada ahí el tamaño/resolución de la suya. También hay que tener en cuenta que no merece la pena hacerse un script para lanzar la orden, puesto que podría fallar o, en el mejor de los casos, nos complicaríamos la vida en el momento en el que quisiéramos parar la grabación. Si os decidís a probar si os funciona bien con un script, siempre podéis intentar parar el proceso con el comando “jobs”, tal y como explicamos en este artículo el pasado junio.
¿Qué te parece este método para grabar la pantalla desde el terminal con FFmpeg?