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

380voto

krystan honour Points 3183

Peek

est une nouvelle application qui vous permet d'enregistrer facilement des GIF à partir de votre écran.

peek screencast demo

Quoi qu'il en soit, gardez à l'esprit que les GIF ont une palette de couleurs très limitée et que ce n'est pas une très bonne idée de les utiliser.

Depuis Ubuntu 18.10, vous pouvez installer Peek directement.

sudo apt install peek

Pour les anciennes versions d'Ubuntu, vous pouvez installer les dernières versions de Peek depuis son PPA .

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

Vous trouverez plus d'informations dans le Repo GitHub .

3 votes

Oui, celui-ci est excellent. Il ne fonctionne qu'avec X11 et est destiné à GNOME 3.

2 votes

@BeastWinterwolf et ExillustX : ne postez pas de rapports de bugs ici, utilisez le traqueur de problèmes où les gens se soucient de les voir ! Signalez-le ici : github.com/phw/peek/issues

4 votes

C'est un outil formidable.

280voto

Bruno Pereira Points 70510

Byzanz

Le meilleur logiciel que j'ai trouvé pour enregistrer des screencasts GIF est Byzanz.

Byzanz est génial car il enregistre directement en GIF, la qualité et les FPS sont impressionnants tout en maintenant la taille des fichiers au minimum.

Installation

Byzanz est maintenant disponible à partir du dépôt de l'univers :

sudo apt-get install byzanz

Utilisation

Lorsqu'il est installé, vous pouvez l'exécuter dans un terminal.

Voici un petit exemple que je viens de réaliser avec

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

enter image description here

0 votes

J'ai Ubuntu 10.04 LTS et byzanz 0.1.1-4 est livré avec. Il est dans le dépôt universe/gnome, je l'ai trouvé, quand j'ai tapé "sudo apt-cache showsrc byzanz". Je l'ai installé et il fonctionne exactement comme vous l'avez démontré. Merci d'avoir indiqué ce paquetage cool - c'est un énorme gain de temps pour les développeurs pour démontrer de nouvelles fonctionnalités aux clients.

4 votes

Merci, bel outil ! Les couleurs ne sont pas toujours précises, mais c'est un détail mineur. J'ai écrit un Shell Shell qui aide à capturer une fenêtre (sélectionnée à l'exécution par l'utilisateur), posté en une réponse ci-dessous .

69 votes

Byzanz n'a pas d'interface utilisateur ! Suis-je censé deviner les x, y, largeur et hauteur de la zone que je veux enregistrer ? C'est un peu ridicule qu'en 2014 je doive encore faire ça.

237voto

user26252 Points 101

Installez d'abord ceci :

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

Ce sont les éléments nécessaires, ImageMagick, MPlayer et Desktop Recorder. Ensuite, utilisez Enregistreur de bureau pour capturer une partie de l'écran/application à utiliser comme screencast. Après que le Desktop Recorder a sauvegardé l'enregistrement dans un fichier de type Vidéo d'OGV , MPlayer sera utilisé pour capturer des captures d'écran au format JPEG et les sauvegarder dans le répertoire "output".

Sur un terminal :

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

Utilisez ImageMagick pour convertir les captures d'écran en gifs animés.

convert output/* output.gif

vous pouvez optimiser les captures d'écran de cette façon :

convert output.gif -fuzz 10% -layers Optimize optimised.gif

35 votes

Une autre façon d'optimiser les gif est d'utiliser gifsicle : gifsicle -O in.gif -o out.gif Je viens d'essayer et j'ai obtenu une réduction de 100x de la taille du fichier.

10 votes

Pour ceux qui se demandent, le premier drapeau dans la commande @Yrogirg est un "O" majuscule, et non le chiffre "0" :)

0 votes

La première commande de conversion ne crée pas le gif pour moi, elle dit "tué" et se termine simplement.

144voto

Rob W Points 2207

byzanz

Vue d'ensemble

Cette réponse contient trois Shell Shell :

  1. byzanz-record-window - Pour sélectionner une fenêtre pour l'enregistrement.
  2. byzanz-record-region - Pour sélectionner une partie de l'écran à enregistrer.
  3. Une interface graphique simple pour 1.

Introduction

Merci à Bruno Pereira pour me présentant byzanz ! Il est très utile pour créer des animations GIF. Les couleurs peuvent être faussées dans certains cas, mais la taille du fichier compense. Exemple : 40 secondes, 3.7Mb .

Utilisation

Sauvegardez un/toutes les deux scripts suivants dans un dossier de votre site Web. $PATH . Voici un exemple d'utilisation du premier script pour faire un screencast d'une fenêtre spécifique.

  1. Exécuter byzanz-record-window 30 -c output.gif
  2. Allez dans la fenêtre (alt-tab) que vous voulez capturer. Cliquez dessus.
  3. Attendre 10 secondes (codé en dur dans $DELAY ), dans lequel vous vous préparez à l'enregistrement.
  4. Après le bip (défini dans le beep fonction), byzanz va commencer.
  5. Après 30 secondes (c'est la signification de 30 à l'étape 1), byzanz se termine. Un signal sonore est à nouveau émis.

J'ai inclus le -c le drapeau en byzanz-record-window pour illustrer que tous les arguments à mon Shell ShellscriptShell sont ajoutés à byzanz-record même. Le site -c Le drapeau indique byzanz pour inclure également le curseur dans le screencast.
Voir man byzanz-record ou byzanz-record --help pour plus de détails.

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

Dépendance : xrectsel de xrectsel . Clonez le référentiel et exécutez make pour obtenir l'exécutable. (S'il proteste qu'il n'y a pas de makefile, exécutez ./bootstrap et le ./configure avant de lancer `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

Version Gui de byzanz-record-window

script avec un simple dialogue 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"

Voir aussi :

19 votes

Ces scripts sont-ils conservés dans un endroit comme github ? Ils sont super utiles, ce serait bien s'ils étaient conservés à un endroit meilleur que le texte dans la réponse StackOverflow.

2 votes

@KFro C'est Ask Ubuntu, pas SO ;) Non, je ne les ai pas mis dans un dépôt git, car les scripts eux-mêmes sont mal documentés (pour les utilisateurs). La documentation d'accompagnement est incluse avec la réponse, donc je ne vois aucun avantage à séparer les fichiers et la documentation dans un dépôt Git.

0 votes

Notez que xrectsel a été séparé de FFcast2 ; il s'agit désormais d'un dépôt indépendant à l'adresse suivante github.com/lolilolicon/xrectsel

53voto

Paul Beckingham Points 7460

ffmpeg ( installer )

L'un des meilleurs outils que j'utilise est ffmpeg . Il peut prendre la plupart des vidéos d'un outil de screencast tel que kazam et le convertir dans un autre format.

Installez-le à partir de centre logiciel - il est automatiquement installé si vous installez l'excellent ubuntu-restricted-extras paquet.

Kazam peut produire dans les formats vidéo suivants mp4 ou webm . Généralement, vous obtenez de meilleurs résultats en produisant en mp4 format.

Exemple de syntaxe de création de GIF

La syntaxe de base pour convertir une vidéo en gif est la suivante :

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

Les GIF convertis - en particulier ceux avec une norme de 25/29 images par seconde - peuvent être très volumineux. Par exemple, une vidéo webm de 800 Ko et de 15 secondes à 25 images par seconde peut atteindre 435 Mo !

Vous pouvez réduire ce phénomène par un certain nombre de méthodes :

Fréquence d'images

Utilisez l'option -r [frame-per-second] . Par exemple

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

Taille réduite de 435 Mo à 19 Mo

Limite de la taille des fichiers

Utilisez l'option -fs [filesize] . Par exemple

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

Note : Il s'agit d'une taille approximative du fichier de sortie. La taille peut donc être légèrement supérieure à celle indiquée.

Taille de la vidéo de sortie

Utilisez l'option -s [widthxheight] . Par exemple

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

Cela a permis de réduire la taille de la vidéo de l'exemple 1366x768 à 26 Mo.

Boucle éternelle

Parfois, vous pouvez souhaiter que le GIF tourne en boucle.

Utilisez l'option -loop_output 0 . Par exemple

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

Optimiser et réduire davantage

Si vous utilisez imagemagick convert avec un facteur de flou entre 3 et 10 %, vous pouvez réduire considérablement la taille de l'image.

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

Enfin

Combinez certaines de ces options pour réduire à quelque chose de gérable pour Ask Ubuntu.

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

Suivi par

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

Exemple

screencast example

0 votes

Si vous avez Docker et que votre vidéo est demo.mkv vous pouvez exécuter cette commande : 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

3 votes

Pour moi, il se plaint qu'il n'y a pas d'option telle que -loop_output ...

1 votes

+1 Meilleure réponse. Mais une question : pensez-vous toujours ubuntu-restricted-extras est excellent ? ?

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