¿Cómo crear imágenes animadas GIF de un screencast?

476

He visto imágenes GIF animadas de transmisiones de pantalla (como la siguiente) promovidas varias veces en este sitio como una forma de mejorar las respuestas.

Imagen GIF animada

¿Qué cadena de herramientas se está utilizando para crear estos? ¿Existe algún programa que lo haga de forma automática, o las personas toman screencasts, los convierten en una serie de cuadros estáticos y luego crean las imágenes GIF?

andrewsomething
fuente
66
LICEcap (http://www.cockos.com/licecap) es mucho más simple que cualquiera de las soluciones a continuación, porque está basado en GUI. Es gratis como en libertad y precio. El único inconveniente es que tienes que ejecutarlo a través de Wine.
Dennis
44
Relacionado: Screencasting GIF; a la manera UNIX de Unix & Linux Stack Exchange.
Cristian Ciupitu
2
¿Se toma esta captura de pantalla de ejemplo en Windows?
Clément
@ Clément Eso fue lo primero que noté también :)
UniversallyUniqueID

Respuestas:

269

Ojeada

Es una nueva aplicación que te permite grabar fácilmente GIF desde tu pantalla.

echar un vistazo a la demostración de screencast

De todos modos, tenga en cuenta que los GIF tienen una paleta de colores muy limitada, por lo que no es una buena idea usarlos.

Desde Ubuntu 18.10 puedes instalar Peek directamente.

sudo apt install peek

Para versiones anteriores de Ubuntu, puede instalar las últimas versiones de Peek desde su PPA .

sudo add-apt-repository ppa:peek-developers/stable
sudo apt update
sudo apt install peek

Encuentra más información en el repositorio de GitHub .

stommestack
fuente
2
Sí, este es genial. solo funciona con X11 y está dirigido a GNOME 3.
Ajith R Nair
2
@BeastWinterwolf y ExillustX: ¡no publique informes de errores aquí, use el rastreador de problemas donde la gente realmente se preocupa por verlos! Informe aquí: github.com/phw/peek/issues
oligofren
2
Esta es una gran herramienta.
Mike
1
@Jop V. ¿cómo hiciste un registro de un registro?
milkovsky
1
@milkovsky No grabé esto. Dicho esto, creo que usaron una máquina virtual y lo grabaron.
stommestack
272

Byzanz

Byzanz es el mejor software que he encontrado para grabar screencasts GIF.

Byzanz es excelente porque graba directamente en GIF, la calidad y el FPS es impresionante, manteniendo el tamaño de los archivos al mínimo.

Instalación

Byzanz ahora está disponible desde el repositorio del universo:

sudo apt-get install byzanz

Uso

Cuando está instalado, puede ejecutarlo en una terminal.

Este es un pequeño ejemplo que acabo de hacer con

byzanz-record --duration=15 --x=200 --y=300 --width=700 --height=400 out.gif

ingrese la descripción de la imagen aquí

Bruno Pereira
fuente
3
Gracias, buena herramienta! Los colores no siempre son precisos, pero eso es un detalle menor. He escrito un script de shell que ayuda a capturar una ventana (seleccionada en tiempo de ejecución por el usuario), publicada en una respuesta a continuación .
Rob W
57
¡Byzanz no tiene ninguna interfaz de usuario! ¿Se supone que debo adivinar la x, y, el ancho y la altura del área que quiero registrar? Es un poco ridículo que en 2014 todavía tuviera que hacer esto.
Dan Dascalescu
55
@DanDascalescu Nadie dice que necesites usarlo ... Prefiero un terminal que una GUI, ¿qué tiene de malo?
Bruno Pereira el
31
@DanDascalescu No hay necesidad de adivinar. Puede usar xwininfopara obtener las propiedades de la ventana.
Marcus Møller
44
¿Alguna forma de evitar tener que saber la duración de antemano? Cuando grabo, nunca sé de antemano cuánto tiempo llevará.
Nicolas Raoul
236

Primero instale esto:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

esas son las cosas requeridas, ImageMagick, MPlayer y Desktop Recorder. Luego use Desktop Recorder para capturar una parte de la pantalla / aplicación para usar como screencast. Después de que Desktop Recorder haya guardado la grabación en un video OGV , MPlayer se usará para capturar capturas de pantalla JPEG, guardándolas en el directorio 'salida'.

En una terminal:

mplayer -ao null <video file name> -vo jpeg:outdir=output

Usa ImageMagick para convertir las capturas de pantalla en gifs animados.

convert output/* output.gif

puedes optimizar las capturas de pantalla de esta manera:

convert output.gif -fuzz 10% -layers Optimize optimised.gif
maniat1k
fuente
35
Otra forma de optimizar gif es usar gifsicle: gifsicle -O in.gif -o out.gifacabo de probar y obtuve una reducción de 100x en el tamaño del archivo.
Yrogirg
10
Para aquellos que se preguntan, la primera bandera en el comando @Yrogirg es una "O" mayúscula, no el dígito "0" :)
brandizzi
2
Wow, gifsicle acaba de hacer el mío más rápido pero no más pequeño, y el comando de conversión optimizado lo hizo realmente feo.
MalcolmOcean
66
Recomiendo la combinación de los dos últimos convertpasos en uno: convert output/* -layers Optimize output.gif. Para mí, esto aceleró el tiempo de procesamiento y redujo el tamaño del archivo de salida. No veo ninguna razón para hacer esos pasos por separado. (No probé el -fuzz 10%argumento.)
thejoshwolfe
1
Al igual que @MalcolmOcean, la convertdeclaración lo hizo más que horrible. Según los documentos ( imagemagick.org/script/command-line-options.php#layers ), la optimizeimplementación puede cambiar con el tiempo. Pero una convertdeclaración ligeramente modificada con la -coalescebandera mejoró las cosas, pero aún no a donde era aceptable. Terminé teniendo que usar la -layers optimize-transparencyconfiguración para obtener mejores resultados:convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif
136

Visión de conjunto

Esta respuesta contiene tres scripts de shell:

  1. byzanz-record-window - Para seleccionar una ventana para la grabación.
  2. byzanz-record-region - Para seleccionar una parte de la pantalla para grabar.
  3. Una interfaz gráfica de usuario simple para 1, por MHC .

Introducción

¡Gracias Bruno Pereira por presentarmebyzanz ! Es bastante útil para crear animaciones GIF. Los colores pueden estar apagados en algunos casos, pero el tamaño del archivo lo compensa. Ejemplo: 40 segundos, 3.7Mb .

Uso

Guarde uno / todos los siguientes dos scripts en una carpeta dentro de su $PATH. Aquí hay un ejemplo sobre el uso del primer script para hacer una transmisión de pantalla de una ventana específica.

  1. correr byzanz-record-window 30 -c output.gif
  2. Vaya a la ventana (alt-tab) que desea capturar. Haz click en eso.
  3. Espere 10 segundos (codificado $DELAY), en el que se prepara para la grabación.
  4. Después del pitido (definido en la beepfunción), byzanzcomenzará.
  5. Después de 30 segundos (ese es el significado del 30paso 1), byzanzfinaliza. Se emitirá un pitido nuevamente.

Incluí la -cbandera byzanz-record-windowpara ilustrar que cualquier argumento de mi script de shell se agrega a byzanz-recordsí mismo. La -cbandera le dice byzanzque también incluya el cursor en el screencast.
Ver man byzanz-recordo byzanz-record --helppara más detalles.

byzanz-record-window

#!/bin/bash

# Delay before starting
DELAY=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}

# Duration and output file
if [ $# -gt 0 ]; then
    D="--duration=$@"
else
    echo Default recording duration 10s to /tmp/recorded.gif
    D="--duration=10 /tmp/recorded.gif"
fi
XWININFO=$(xwininfo)
read X <<< $(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y <<< $(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W <<< $(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H <<< $(awk -F: '/Height/{print $2}' <<< "$XWININFO")

echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
    echo $i
    sleep 1
done

beep
byzanz-record --verbose --delay=0 --x=$X --y=$Y --width=$W --height=$H $D
beep

byzanz-record-region

Dependencia: xrectselde xrectsel . Clone el repositorio y ejecútelo makepara obtener el ejecutable. (Si protesta no hay un archivo MAKE, ejecute ./bootstrapy ./configureantes de ejecutar `make).

#!/bin/bash

# Delay before starting
DELAY=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}

# Duration and output file
if [ $# -gt 0 ]; then
    D="--duration=$@"
else
    echo Default recording duration 10s to /tmp/recorded.gif
    D="--duration=10 /tmp/recorded.gif"
fi

# xrectsel from https://github.com/lolilolicon/xrectsel
ARGUMENTS=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1

echo Delaying $DELAY seconds. After that, byzanz will start
for (( i=$DELAY; i>0; --i )) ; do
    echo $i
    sleep 1
done
beep
byzanz-record --verbose --delay=0 ${ARGUMENTS} $D
beep

Versión gui de byzanz-record-window

(comentario de MHC ): me he tomado la libertad de modificar el script con un simple diálogo GUI

#!/bin/bash

# AUTHOR:   (c) Rob W 2012, modified by MHC (https://askubuntu.com/users/81372/mhc)
# NAME:     GIFRecord 0.1
# DESCRIPTION:  A script to record GIF screencasts.
# LICENSE:  GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# DEPENDENCIES:   byzanz,gdialog,notify-send (install via sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd)

# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")

# Delay before starting
DELAY=10

# Standard screencast folder
FOLDER="$HOME/Pictures"

# Default recording duration
DEFDUR=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

# Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)

# Duration and output file
if [ $USERDUR -gt 0 ]; then
    D=$USERDUR
else
    D=$DEFDUR
fi

# Window geometry
XWININFO=$(xwininfo)
read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO")

# Notify the user of recording time and delay
notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."

#Actual recording
sleep $DELAY
beep
byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFrecord_$TIME.gif"
beep

# Notify the user of end of recording.
notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif"
Rob W
fuente
17
¿Se guardan estos guiones en algún lugar como Github? Son súper útiles, sería bueno si se mantuvieran en un lugar mejor que el texto en la respuesta de StackOverflow.
KFro
1
@KFro Esto es Ask Ubuntu, no SO;) No, no los he puesto en un repositorio git, porque los scripts están mal documentados (para los usuarios). La documentación adjunta se incluye con la respuesta, por lo que no veo ningún beneficio de dividir los archivos y la documentación en un repositorio de Git.
Rob W
1
No más créditos para editar, pero listo ;-).
Rmano
2
Solo quería agradecer enormemente esta respuesta increíble y me ayudó mucho. Esto es lo que terminé con. Me gusta usar notify-sendtambién en caso de que mi sonido esté apagado.
Daniel Buckmaster
2
@Masi Byzanz, y estos scripts, funcionan bien para mí en 16.04
Jeff Puckett
51

ffmpeg Instalar ffmpeg

Una de las mejores herramientas que uso es ffmpeg. Puede tomar la mayoría de los videos de una herramienta de screencast como kazamconvertirlos a otro formato.

Instale esto desde el centro de software : se instala automáticamente si instala el excelente ubuntu-restricted-extraspaquete.

Kazam puede emitir en formatos de video mp4o webm. En general, obtiene mejores resultados en mp4formato.

ejemplo de sintaxis de creación de GIF

La sintaxis básica para convertir video a gif es:

ffmpeg -i [inputvideo_filename] -pix_fmt rgb24 [output.gif]

GIF convertidos: especialmente aquellos con un estándar de 25/29 fotogramas por segundo pueden ser muy grandes. Por ejemplo, ¡un video web de 15 segundos de 800 Kb a 25 fps puede generar 435 Mb!

Puede reducir esto mediante varios métodos:

cuadros por segundo

Usa la opción -r [frame-per-second]

por ejemplo ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif

Tamaño reducido de 435Mb a 19Mb

límite de tamaño de archivo

Usa la opción -fs [filesize]

por ejemplo ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif

Nota: este es un tamaño de archivo de salida aproximado, por lo que el tamaño puede ser ligeramente mayor que el especificado.

tamaño del video de salida

Usa la opción -s [widthxheight]

por ejemplo ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif

Esto redujo el tamaño del video de ejemplo 1366x768 a 26Mb

bucle para siempre

A veces es posible que desee que el GIF se repita para siempre.

Usa la opción -loop_output 0

ffmpeg -i Untitled_Screencast.webm -loop_output 0 -pix_fmt rgb24 out.gif

optimizar y reducir aún más

Si usa imagemagick convertun factor de fuzz entre 3% y 10%, puede reducir drásticamente el tamaño de la imagen

convert output.gif -fuzz 3% -layers Optimize finalgif.gif

finalmente

combine algunas de estas opciones para reducir a algo manejable para Ask Ubuntu.

ffmpeg -i Untitled_Screencast.webm -loop_output 0 -r 5 -s 320x200 -pix_fmt rgb24 out.gif

seguido por

convert output.gif -fuzz 8% -layers Optimize finalgif.gif

ejemplo

ingrese la descripción de la imagen aquí

fossfreedom
fuente
Si tiene acoplable y el vídeo se demo.mkvpuede ejecutar estos comandos: docker run --rm -v $(pwd):/tmp/video/ jrottenberg/ffmpeg -i /tmp/video/demo.mkv -framerate 1/2 -pix_fmt rgb24 -loop 0 /tmp/video/demo.gif,sudo chown $USER:$USER demo.gif
czerasz
2
Para mí, se queja de que no existe una opción como -loop_output...
1
+1 La mejor respuesta. ¿Pero una q todavía crees que ubuntu-restricted-extrases excelente?
Severus Tux
1
@ParanoidPanda ahora la opción es -loop. Así sería -loop 0. Aquí hay un comando de trabajo en Ubuntu 16.04.01 ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif. +500,500es la posición X, Y para comenzar el rectángulo de 100x100. xgrabtoma la pantalla como entrada.
sanbor
34

Silentcast

Silentcast es otra gran herramienta basada en GUI para crear imágenes animadas .gif. Sus características incluyen:

  • 4 modos de grabación:

    1. Pantalla completa

    2. Ventana interior

    3. Ventana con decoracion

    4. La selección personalizada

  • 3 formatos de salida:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (marcos)

    5. .mkv

  • No es necesaria la instalación (portátil)

  • Directorio de trabajo personalizado

  • Fps personalizados

Instalación

Si desea una instalación regular y está ejecutando una versión compatible de Ubuntu, puede instalar Silentcast by PPA:

sudo add-apt-repository ppa:sethj/silentcast  
sudo apt-get update  
sudo apt-get install silentcast  

Si no está ejecutando una versión compatible de Ubuntu (¡realmente debería actualizar!), Deberá descargar la última versión de la página de GitHub y satisfacer manualmente las dependencias (puede adquirir yad y ffmpeg desde aquí y aquí, respectivamente) o, si está ejecutando una versión un poco más reciente, como la 13.10, puede intentar descargar el .deb directamente .

Si está utilizando Gnome, es posible que desee instalar la extensión Topicons para facilitar la detención de Silentcast.

Uso

Inicie Silentcast desde la interfaz gráfica de usuario de su entorno de escritorio o ejecute el silentcastcomando en una terminal. Elija su configuración y siga las instrucciones en pantalla. Cuando termine de grabar, se le presentará un cuadro de diálogo para optimizar la salida final eliminando un cierto número de fotogramas.

Para obtener pautas de uso más detalladas, consulte README, ya sea la versión en línea de GitHub o la versión local almacenada /usr/share/doc/silentcastcon zless o su editor favorito.

Ejemplo

Notas:

Silentcast todavía está en la etapa de desarrollo y, aunque es bastante estable, puede encontrar algunos errores. Si lo hace, infórmelos en el rastreador de problemas de GitHub del proyecto . Si tiene problemas para instalar desde el PPA y está ejecutando una versión compatible de Ubuntu, deje un comentario a continuación o comuníquese con el mantenedor (yo) en Launchpad.

Seth
fuente
tan pronto como presiono 'Stop' se bloquea ...
Francisco Corrales Morales
@FranciscoCorralesMorales ¿Puedes ejecutarlo desde la línea de comandos y luego intentarlo? Una vez que se bloquea, tome la salida y cárguela en paste.ubuntu.com y conéctela de nuevo aquí para que pueda echar un vistazo. ¡Gracias!
Seth
1
¡Puedo confirmar que esto funciona muy bien! Crea un archivo .gif muy pequeño (650 KB) con gran resolución fuera de las ventanas abiertas como se muestra en esta respuesta: askubuntu.com/questions/882419/… Podría agregar el póster @Seth es un gran tipo y me ayudó en AU sala de chat general configurarlo :)
WinEunuuchs2Unix
¿Se abandona el proyecto? No ha habido ningún compromiso con el repositorio en casi dos años.
Flujo
@flux desafortunadamente, entre problemas de salud y uni, sí. El repositorio está actualmente abandonado. Sin embargo, el proyecto en GitHub no lo es y puede obtener el último código allí.
Seth
8

Hay todo tipo de formas complicadas y que funcionan bien (presumiblemente) para hacer esto enumeradas aquí. Sin embargo, nunca he querido pasar por ese proceso antes ni después. Entonces, simplemente uso un convertidor en línea que se adapta a mis necesidades las pocas veces que necesito hacerlo. He usado este sitio:

http://ezgif.com/video-to-gif

No es mi sitio y no estoy afiliado a ellos de ninguna manera. Son solo uno de mis marcadores y hay muchos más.

KGIII
fuente
Me gusta esto. Ya utilizo el simple screenrecorder para grabar mi escritorio para YouTube ocasionalmente, por lo que convertir el mkv en un gif fue fácil con esto.
isaaclw
8

Creé record-gif.shuna versión mejorada de Rob Wbyzanz-record-region :

Una interfaz gráfica de usuario poco convincente para byzanzmejorar la experiencia del usuario ( área seleccionable por el mouse , barra de progreso de grabación, grabación reproducible ).

grabar escritorio con shell

  • establecer grabación duration;
  • establecer save_asdestino;
  • seleccione –con el mouse– el área a grabar;
  • cree un guión para reproducir la grabación (cf. $HOME/record.again).

Instalar en pc

También creé un script de instalación

curl --location https://git.io/record-gif.sh | bash -
Édouard Lopez
fuente
1
sudo apt install autoconf byzanzDebe hacerlo antes de ejecutar este script. no está instalado por defecto en ubuntu
Crantisz
@Crantisz gracias, actualicé el script de instalación para instalar autoconfy byzanz. ¿Podrías probarlo?
Édouard Lopez
Lo acabo de probar en otra PC. No hay git en mi sistema ubuntu recién instalado. Y no sé por qué, pero el script se detiene justo después de la segunda pregunta apt-get Y / N. ¿Puedes empaquetar todas las dependencias en un solo comando?
Crantisz
@Crantisz el comando es un script de instalación, si solo desea record-gif.sh puede obtenerlo del repositorio
Édouard Lopez
4
  1. Instale estos 3 paquetes: imagemagick mplayer gtk-recordmydesktop
  2. Ejecute Desktop Recorder para capturar una parte de la pantalla / aplicación para usar como screencast
  3. Descargar ogv2gif.shdesde https://github.com/nicolas-raoul/ogv2gif
  4. Correr: ./ogv2gif.sh yourscreencast.ogv
  5. El archivo GIF se colocará en el mismo directorio.

100% inspirado en la respuesta de maniat1k .

Nicolas Raoul
fuente
3

Si quieres ser aún más elegante, puedes usar un método más sofisticado que los gifs animados usando el screencast de lienzo HTMl5. El proyecto x11-canvas-screencast creará una captura de pantalla animada de lienzo html5.

Es posible que haya visto algunos ejemplos famosos de esta tecnología en el sitio web de Sublime Text. x11-canvas-screencastlleva este método un paso más allá al incorporar el seguimiento del cursor del mouse. Aquí hay una demostración de lo que produce x11-canvas-screencast

El resultado es mejor que un gif animado, ya que no se limita a la cantidad de colores que tiene y requiere menos ancho de banda.

gene_wood
fuente
1
Eso es bueno y todo, pero no puedes compartirlo fácilmente, por ejemplo, Slack, Twitter, etc.
Elijah Lynn
@ElijahLynn muy cierto. Esta solución está optimizada para alta velocidad de cuadros, bajo ancho de banda, profundidad de color completa. No es portátil (para incrustar en un tweet, por ejemplo), ya que requiere JavaScript.
gene_wood
3

De acuerdo, para capturar también los clics del mouse, lo único que encontré fue key-mon(a través del archivo README de screenkey):

Entonces yo:

  • comienzo key-mon
  • Use xrectselpara poner las coordenadas de la pantalla en un byzanzcomando
  • Ejecuta el byzanzcomando

... y se ve más o menos así:

out.gif

Tenga en cuenta que key-mon --visible_clickdibujaría un círculo alrededor del puntero del mouse al hacer clic con el mouse, lo que preferiría, pero en Ubuntu 14.04.5 LTS esto está algo roto, ya que este círculo no aparece y desaparece lo suficientemente rápido para ilustrar correctamente los clics (es decir, prensas y lanzamientos de mouse).

sdaau
fuente
2

Recientemente creé una versión combinada de los scripts ya publicados aquí.
Básicamente, le permite grabar la región de la pantalla, pero con una GUI simple.

Gracias por Rob W por proporcionar esos scripts geniales

Aquí está el código (o lo esencial si lo desea):

#!/bin/bash

#Records selected screen region, with GUI

#This is combined version of GIF recording scripts, that can be found here: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast
#Thanks to Rob W, and the other author (unmentioned), for creating this lovely scripts

#I do not own any rights to code I didn't write
#                                     ~Jacajack

DELAY=5 #Delay before starting
DEFDUR=10 #Default recording duration
TIME=$(date +"%Y-%m-%d_%H%M%S") #Timestamp
FOLDER="$HOME/Pictures/Byzanz" #Default output directory

#Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

#Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)

#Duration and output file
if [ $USERDUR -gt 0 ]; then
    D=$USERDUR
else
    D=$DEFDUR
fi

#Get coordinates using xrectsel from https://github.com/lolilolicon/xrectsel
REGION=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1

notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."

for (( i=$DELAY; i>0; --i )) ; do
    sleep 1
done

#Record
beep
byzanz-record --cursor --verbose --delay=0 ${REGION} --duration=$D "$FOLDER/byzanz-record-region-$TIME.gif"
beep

notify-send "GIFRecorder" "Screencast saved to $FOLDER/byzanz-record-region-$TIME.gif"
Jacajack
fuente
2

Si también desea grabaciones visibles de clics del mouse o pulsaciones de teclas, entonces screenkey es su mejor opción: https://github.com/wavexx/screenkey

nachtigall
fuente
2
No veo cómo screenkeymanejaría los clics del mouse (parece ser solo para indicación del teclado), sin embargo, su README se refiere a key-monqué puede hacer eso, vea mi respuesta a continuación.
sdaau
1

Uso gtk-recordmydesktopy ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

Ejecute RecordMyDesktop para capturar una parte de la pantalla / aplicación para usar como screencast:

gtk-recordmydesktop

Crea ogv2gif.shcon el siguiente contenido:

INPUT_FILE=$1
FPS=15
WIDTH=320
TEMP_FILE_PATH="~/tmp.png"
ffmpeg -i $INPUT_FILE -vf fps=$FPS,scale=$WIDTH:-1:flags=lanczos,palettegen $TEMP_FILE_PATH
ffmpeg -i $INPUT_FILE -i $TEMP_FILE_PATH -loop 0 -filter_complex "fps=$FPS,scale=$WIDTH:-1:flags=lanczos[x];[x][1:v]paletteuse" $INPUT_FILE.gif
rm $TEMP_FILE_PATH

Úselo:

./ogv2gif.sh yourscreencast.ogv

Referencias

Fedir RYKHTIK
fuente
1

Pruebo todo el método anterior, encontré que el más simple es:

  1. use gtk-recordmydesktop y key-mon para obtener un ogv
  2. ffmpeg -i xx.ogv xx.gif <- sin ningún parámetro .

el fps es original y el tamaño de gif es menor que el archivo ogv.

eexpress utópico
fuente