domingo, 8 de mayo de 2011

Grabar el escritorio con ffmpeg

Como todos sabeis, hay varios programas para grabar el escritorio como "recordmydesktop", "istambul" y otros...

El problema es que no a todo el mundo les graba bien con los efectos de compiz andando.

Puesb bien, con ffmpeg se puede hacer, y para hacerlo mas facil, he creado un script que automatiza el proceso y os pide la resolución el nombre de archivo y demás.

Crear un archivo de texto en el escritorio mismo, le dais por ejemplo el nombre de "grabar-escritorio", luego pegáis esto:

--------------------------Copia el texto-----------------------------
#!/bin/bash

echo "Se va a grabar el escritorio..."
echo
sleep 1

# -------------Código desechado por una mejora expuesta por Rioport-------------------
#echo "A continuación tienes los datos de resoluciones disponibles de tu pantalla"
#echo "La que tiene asterizco es la que usas actualmente y la que deberías elegir"
#echo
#xrandr
#echo
#read -p "Elije una resolución: " RESOLUCION
# ------------------------Fin código desechado----------------------------------------

# Mejora por Rioport
LINE=`xrandr -q | grep Screen`
WIDTH=`echo ${LINE} | awk '{ print $8 }'`
HEIGHT=`echo ${LINE} | awk '{ print $10 }' | awk -F"," '{ print $1 }'`
# Con estas tres líneas se obtiene la resolución de pantalla, ancho x alto

echo "...la resolución detectada es ${WIDTH}x${HEIGHT}"
echo
sleep 1
read -p "¿Que frecuencia de refresco quieres? (25 es lo normal): " FPS
echo
read -p "¿Quieres grabar también el audio? si/no: " AUDIO
echo
read -p "Por último, elija un nombre: (puedes ponerlo incluyendo la ruta) " NOMBRE
echo
echo "El vídeo resultante se creará en la ruta actual (o en la indicada) con los siguientes datos:"
echo "-------------------------------------"
echo " Nombre: $NOMBRE"
echo " Resolución: ${WIDTH}x${HEIGHT}"
echo " Tasa de refresco: $FPS fps"
echo " Con audio: $AUDIO"
echo "--------------------------------------"
echo
echo "Presione Ctrl+C para terminar con la captura de vídeo cuando quiera"
sleep 4
echo "Puedes minimizar esta ventana, pues la grabación comenzará en 4 segundos..."
sleep 4
echo

if [ $AUDIO = "no" ]
    then
    ffmpeg -f x11grab -s ${WIDTH}x${HEIGHT} -r $FPS -i :0.0 -sameq $NOMBRE.mpg
    # -f Indica el formato.
    # -s Indica la resolución. Puede ser: 1024x768, hd720, 640x480, svga).
    # -r Tasa de frames.
    # Lugar en donde el vídeo se va a guardar (donde se ejecuta el script)
    # mi-video.mpg Nombre y extensión del archivo.(Podemos cambiar el formato, cambiando la extensión ".mpg" )
fi
if [ $AUDIO = "si" ]
    then
    #ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r $FPS -s ${WIDTH}x${HEIGHT} -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0   -y $NOMBRE.mkv
    ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r $FPS -s ${WIDTH}x${HEIGHT} -i :0.0 -acodec pcm_s16le -vcodec libx264 -threads 0   -y $NOMBRE.mkv

    # -s Indica la resolución. Puede ser: 1024x768, hd720, 640x480, svga).
    # -r Tasa de frames.
    # Lugar en donde el vídeo se va a guardar  (donde se ejecuta el script)
     # mi-video.mkv Nombre y extensión del archivo.(Podemos cambiar el formato, cambiando la extensión ".mkv" )
fi

# Script creado por Scorpyo82 y modificado por Rioport


--------------------------------------------------------------------

Guardáis y le dais permisos de ejecución al archivo, para ello botón derecho sobre el icono y le dais a permisos, y click sobre "Permitir ejecutar" y aceptamos.

Ya solo queda hacer doble click y darle a "ejecutar en una terminal" para grabar el escritorio.

Un saludo a todos.

No hay comentarios:

Publicar un comentario