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?
Nuevo blog sobre Software Libre desde Argentina!
Visitanos:
http://softwarecriollo.blogspot.com
En Facebook: SoftwareCriollo Argentina
En twitter: @softwarecriollo
Debemos difundir el conocimiento para ser libres!
Saludos!
Está bien tener esta línea a mano. El otro día yo me estuve peleando para hacer un screencast con ffmpeg y tuve el problema del audio, que no sincronizaba bien.
Lo solucioné de una forma muy rudimentaria… grabando el audio con arecord por separado y luego juntando los streams :S:S
Hola,
si muy útil amigos.
Me inspire en bash y arme un script con el nombre de «xrec» y lo empaquete en deb.
si quieren probarlo están invitado http://cut07.tk/e6
Yo uso el siguiente comando:
$ ffmpeg -f oss -i /dev/dsp1 -f x11grab -s sxga -r 24 -i :0.0 /home/seunome/Vídeos/teste.mpg
O “-f oss” es que los estados que quieren grabar audio también,
“-i /dev/dsp” le dice al dispositivo de entrada de audio que se utilizado.
Use “-i /dev/dsp0” ou “-i /dev/dsp1” (Para mí, se trabajó con DSP1)
Lo “-f x11grab” los informes que desea grabar la pantalla de vídeo Grafix servidor X11.
O “-s sxga” equivale a “-s 1280×1024″ que es la resolución de mi pantalla (LCD). outra opção es xga que corresponde a 1024×768, Para saber mas leer la documentación de ffmpeg.
O “-r 24″ informa que queremos grabar 24 fotogramas (imágenes) por segundo, que es el mínimo para tener la sensación de una película.
Lo “-i :0.0″ indica que queremos capturar las pantallas de visualización em “0.0″ del X11.
Por último acaba de configurar el directorio y poner fin a nombre de archivo que se generará.
Eso es todo, se puede leer la documentación de ffmpeg para mejorar y obtener una mejor calidad.
Gracias a todos.
Gracias. En la resolución, p.e. 1024X600, la equis debe ponerse en mayúscula para que funcione el comando.
Que Tal,probé todos los comandos que dijiste y todos me graban video sin audio.Tengo Ubuntu 20.04.Alguna sugerencia?
Ubuntu cambio de controladores base igual que Debian y otros, no se cual usaran ahora ya que yo aún vivo en el pasado.
Averigua cuales usan y reemplaza los de Alsa o Pulse.