548 votes

Comment créer des images GIF animées d'un screencast ?

J'ai vu des images GIF animées de captures d'écran (comme celle ci-dessous) promues plusieurs fois sur ce site comme un moyen d'améliorer les réponses.

Animated GIF image

Quelle chaîne d'outils est utilisée pour les créer ? Existe-t-il un programme qui le fait automatiquement, ou bien les gens prennent-ils des screencasts, les convertissent-ils en une série d'images statiques, puis créent-ils les images GIF ?

7 votes

LICEcap (http://www.cockos.com/licecap) est beaucoup plus simple que toutes les solutions ci-dessous, car elle est basée sur une interface graphique. Il est libre comme dans la liberté et le prix. Le seul inconvénient est que vous devez l'exécuter via Wine.

5 votes

En rapport : Screencasting GIF ; la méthode UNIX du Stack Exchange Unix & Linux.

1 votes

2voto

Jacajack Points 674

J'ai récemment créé une version combinée de scripts déjà postée ici.
Fondamentalement, il vous permet d'enregistrer la région de l'écran, mais avec une interface graphique simple.

Merci pour Rob W pour avoir fourni ces cool scripts.

Voici le code (ou Gist si vous le souhaitez) :

#!/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"

2voto

nachtigall Points 231

Si vous voulez également des enregistrements visibles des clics de souris ou des frappes de touches, screenkey est votre meilleur choix : https://github.com/wavexx/screenkey

2 votes

Je ne vois pas comment screenkey gérerait les clics de souris (il semble qu'il ne soit destiné qu'à l'indication du clavier), cependant, son README se réfère à key-mon qui peut le faire, voir mon réponse ci-dessous.

1voto

Fedir RYKHTIK Points 1653

Utilisez gtk-recordmydesktop y ffmpeg :

apt-get install gtk-recordmydesktop ffmpeg

Exécutez RecordMyDesktop pour capturer une partie de l'écran/application à utiliser comme screencast :

gtk-recordmydesktop

Créer ogv2gif.sh avec le contenu suivant :

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

Utilisez-le :

./ogv2gif.sh yourscreencast.ogv

Références :

1voto

eexpress Points 251

J'ai testé toutes les méthodes ci-dessus, et j'ai trouvé la plus simple :

  1. utiliser gtk-recordmydesktop y key-mon pour obtenir un ogv
  2. ffmpeg -i xx.ogv xx.gif <-- sans aucun paramètre .

les images par seconde sont originales, et la taille du gif est inférieure à celle du fichier ogv.

0voto

xavierm02 Points 2255

C'est l'approche que je suis pour enregistrer des GIFs de haute qualité.

  • Enregistrez l'écran avec un enregistreur d'écran tel que Obs.
  • Modifiez la vidéo si nécessaire.
  • Convertissez la vidéo en GIF en utilisant GifTuna .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X