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


476

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

Image GIF animée

Quelle chaîne d'outils est utilisée pour les créer? Existe-t-il un programme qui effectue cela automatiquement, ou les gens prennent-ils des screencasts, les convertissant en une série de cadres statiques, puis créant les images GIF?


6
LICEcap (http://www.cockos.com/licecap) est beaucoup plus simple que n’importe laquelle des solutions ci-dessous, car elle est basée sur une interface graphique. C'est gratuit comme dans la liberté et le prix. Le seul inconvénient est que vous devez l'exécuter via Wine.
Dennis

4
Connexes: screencasting GIF; la manière UNIX à partir de la pile Unix et Linux Exchange.
Cristian Ciupitu


2
Cet exemple de capture d'écran est-il pris sous Windows?
Clément

@ Clément C'est la première chose que j'ai remarquée aussi :)
UniversallyUniqueID

Réponses:


269

Peek

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

démo peek screencast

Quoi qu'il en soit, gardez à l'esprit que les couleurs GIF ont une palette de couleurs très limitée, ce n'est donc 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 à partir de son PPA .

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

Trouvez plus d'informations dans le dépôt GitHub .


2
Oui celui-ci est génial. sa seule fonctionne avec X11 et est destiné à GNOME 3.
Ajith R Nair

2
@BeastWinterwolf et ExillustX: ne postez pas de rapports de bogues ici, utilisez le suivi des problèmes là où les gens s'intéressent vraiment à les voir! Signalez-le ici: github.com/phw/peek/issues
oligofren

2
C'est un excellent outil.
Mike

1
@Jop V. Comment avez-vous enregistré un enregistrement?
milkovsky

1
@ Milkovsky je n'ai pas enregistré cela. Cela dit, je pense qu’ils ont utilisé une machine virtuelle et l’ont enregistrée.
Stommestack

272

Byzanz

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

Byzanz est formidable car il enregistre directement au format GIF, la qualité et le FPS sont impressionnants, tout en maintenant la taille des fichiers à un minimum.

Installation

Byzanz est maintenant disponible dans le référentiel de l'univers:

sudo apt-get install byzanz

Usage

Une fois installé, vous pouvez l'exécuter dans un terminal.

C’est un petit exemple que je viens de faire avec

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

entrez la description de l'image ici


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

57
Byzanz n'a pas d'interface utilisateur! Suis-je censé deviner les dimensions x, y, largeur et hauteur de la zone que je souhaite enregistrer? C'est un peu ridicule qu'en 2014, je devrais toujours le faire.
Dan Dascalescu

5
@DanDascalescu Personne n'a dit que vous deviez l'utiliser ... Je préfère de loin un terminal à une interface graphique, qu'est-ce qui ne va pas avec ça?
Bruno Pereira

31
@DanDascalescu Il n'y a pas besoin de deviner. Vous pouvez utiliser xwininfopour obtenir les propriétés de la fenêtre.
Marcus Møller le

4
Y a-t-il un moyen d'éviter de connaître la durée à l'avance? Lors de l'enregistrement, je ne sais jamais à l'avance combien de temps cela prendra.
Nicolas Raoul

236

Installez d'abord ceci:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

ce sont les éléments requis, ImageMagick, MPlayer et Desktop Recorder. Utilisez ensuite Desktop Recorder pour capturer une partie de l’écran / de l’application à utiliser comme screencast. Une fois que Desktop Recorder a sauvegardé l'enregistrement dans une vidéo OGV , MPlayer sera utilisé pour capturer des captures d'écran JPEG, en les enregistrant dans le répertoire "sortie".

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
Une autre façon d’optimiser gif consiste à utiliser gifsicle: gifsicle -O in.gif -o out.gifje viens d’essayer de réduire de 100 fois la taille du fichier.
Yrogirg

10
Pour ceux qui se demandent, le premier drapeau de la commande @Yrogirg est un "O" majuscule, pas le chiffre "0" :)
brandizzi

2
Wow, gifsicle a juste rendu le mien plus rapide mais pas plus petit, et la commande de conversion optimisée le rendait vraiment moche.
MalcolmOcean

6
Je recommande de combiner les deux dernières convertétapes en une: convert output/* -layers Optimize output.gif. Pour moi, cela a accéléré le temps de traitement et réduit la taille du fichier de sortie. Je ne vois aucune raison de faire ces étapes séparément. (Je n'ai pas essayé la -fuzz 10%discussion.)
thejoshwolfe

1
Comme @MalcolmOcean, la convertdéclaration a été hideuse. Selon la documentation ( imagemagick.org/script/command-line-options.php#layers ), la optimizemise en œuvre peut changer avec le temps. Mais une convertdéclaration légèrement modifiée avec le -coalescedrapeau a amélioré les choses, mais pas dans la mesure où elle était acceptable. J'ai fini par avoir à utiliser les -layers optimize-transparencyparamètres pour obtenir de meilleurs résultats:convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif

136

Vue d'ensemble

Cette réponse contient trois scripts 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 pour l'enregistrement.
  3. Une interface graphique simple pour 1, par MHC .

introduction

Merci Bruno Pereira de m'avoir présenté àbyzanz ! C'est très utile pour créer des animations GIF. Les couleurs peuvent être éteintes dans certains cas, mais la taille du fichier le compense. Exemple: 40 secondes, 3.7MB .

Usage

Enregistrez un ou tous les deux scripts suivants dans un dossier de votre $PATH. Voici un exemple d'utilisation du premier script pour créer une capture d'écran d'une fenêtre spécifique.

  1. Courir byzanz-record-window 30 -c output.gif
  2. Accédez à la fenêtre (alt-tab) que vous souhaitez capturer. Clique dessus.
  3. Attendez 10 secondes (codées en dur $DELAY) pendant lesquelles vous préparez l'enregistrement.
  4. Après le bip (défini dans la beepfonction), byzanzva commencer.
  5. Après 30 secondes (c'est le sens de l' 30étape 1), byzanzse termine. Un bip sera diffusé à nouveau.

J'ai inclus le -cdrapeau dans byzanz-record-windowpour illustrer que tous les arguments de mon script shell sont ajoutés à byzanz-recordlui-même. Le -cdrapeau indique byzanzd'inclure également le curseur dans la capture d'écran.
Voir man byzanz-recordou byzanz-record --helppour 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épendances: à xrectselpartir de xrectsel . Clonez le référentiel et exécutez-le makepour obtenir le fichier exécutable. (Si elle proteste, il n'y a pas de makefile, lancez ./bootstrapet exécutez ./configureavant make `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

(commentaire de MHC ): Je me suis permis de modifier le script avec un simple dialogue graphique

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

17
Ces scripts sont-ils conservés quelque part comme github? Ils sont super utiles, ce serait bien s'ils étaient conservés mieux que le texte dans la réponse StackOverflow.
KFro

1
@KFro C'est Ask Ubuntu, pas SO;) Non, je ne les ai pas placées dans un référentiel git, car les scripts eux-mêmes sont mal documentés (pour les utilisateurs). La documentation jointe est incluse dans la réponse. Je ne vois donc aucun avantage à fractionner les fichiers et la documentation dans un référentiel Git.
Rob W

1
Pas plus de crédits pour l'édition, mais c'est fait ;-).
Rmano

2
Je voulais juste dire un grand merci pour cela - réponse géniale et m'a beaucoup aidé. Voici ce que j'ai fini avec. J'aime utiliser notify-sendaussi au cas où mon son est désactivé.
Daniel Buckmaster

2
@Masi Byzanz - et ces scripts - fonctionnent parfaitement pour moi en 16.04
Jeff Puckett

51

ffmpeg Installer ffmpeg

L'un des meilleurs outils que j'utilise est ffmpeg. La plupart des vidéos peuvent être extraites d'un outil de capture d'écran, par exemple, kazamet converties dans un autre format.

Installez-le à partir du centre de logiciels - il est automatiquement installé si vous installez l'excellent ubuntu-restricted-extraspaquet.

Kazam peut sortir dans les formats vidéo mp4ou webm. Généralement, vous obtenez de meilleurs résultats en mp4format de sortie .

exemple de syntaxe de fabrication 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 résolution standard de 25/29 images par seconde peuvent être très grands. Par exemple, une vidéo de 800 Ko webm en 15 secondes à 25 ips peut générer une sortie de 435 Mo!

Vous pouvez réduire cela par un certain nombre de méthodes:

framerate

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 435Mo à 19Mo

taille limite du fichier

Utilisez l'option -fs [filesize]

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

Remarque - Il s’agit d’une taille approximative du fichier de sortie, qui peut donc être légèrement supérieure à celle spécifiée.

taille de la sortie vidéo

Utilisez l'option -s [widthxheight]

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

Cela a réduit la taille de la vidéo par exemple 1366x768 à 26 Mo.

boucle pour toujours

Parfois, vous voudrez peut-être que le GIF soit bouclé pour toujours.

Utilisez l'option -loop_output 0

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

optimiser davantage et réduire

si vous utilisez imagemagick convertavec un facteur de fuzz compris 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

entrez la description de l'image ici


Si vous avez Docker et votre vidéo est demo.mkvvous 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
czerasz

2
Pour moi, il se plaint qu'il n'y a pas une telle option comme -loop_output...

1
+1 meilleure réponse. Mais pensez-vous toujours qu’il ubuntu-restricted-extrasest excellent?
Severus Tux

1
@ParanoidPanda maintenant l'option est -loop. Donc ce serait -loop 0. Voici une commande de travail dans Ubuntu 16.04.01 ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif. +500,500est la position X, Y pour démarrer le rectangle 100x100. xgrabprend l'écran comme entrée.
Sanbor

34

Silentcast

Silentcast est un autre excellent outil graphique permettant de créer des images animées .gif. Ses caractéristiques comprennent:

  • 4 modes d'enregistrement:

    1. Écran entier

    2. Fenêtre intérieure

    3. Fenêtre avec décoration

    4. Sélection personnalisée

  • 3 formats de sortie:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (cadres)

    5. .mkv

  • Aucune installation nécessaire (portable)

  • Répertoire de travail personnalisé

  • Fps personnalisés

Installation

Si vous souhaitez une installation régulière et exécutez une version prise en charge d'Ubuntu, vous pouvez installer Silentcast by PPA:

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

Si vous n'exécutez pas de version prise en charge d'Ubuntu (vous devez vraiment mettre à niveau!), Vous devrez télécharger la dernière version à partir de la page GitHub et satisfaire manuellement les dépendances (vous pouvez vous procurer yad et ffmpeg respectivement ici et ici ) ou Si vous utilisez une version légèrement plus récente telle que 13.10, vous pouvez essayer de télécharger directement le fichier .deb .

Si vous utilisez Gnome, vous voudrez peut-être installer l’ extension Topicons pour faciliter l’arrêt de Silentcast.

Usage

Démarrez Silentcast à partir de l'interface graphique de votre environnement de bureau ou exécutez la silentcastcommande dans un terminal. Choisissez vos paramètres et suivez les instructions à l'écran. Une fois l’enregistrement terminé, une boîte de dialogue vous permettant d’optimiser la sortie finale en supprimant un certain nombre d’images vous sera présentée.

Pour des instructions d'utilisation plus détaillées, consultez le fichier README, soit la version en ligne de GitHub , soit la version locale stockée dans /usr/share/doc/silentcastzless ou votre éditeur favori.

Exemple

Remarques:

Silentcast est encore en phase de développement et bien que très stable, vous pourriez rencontrer des bugs. Si vous le faites, signalez-les sur le suivi des problèmes GitHub du projet . Si vous rencontrez des problèmes pour installer à partir du PPA et que vous utilisez une version d’Ubuntu prise en charge, laissez un commentaire ci-dessous ou contactez le responsable (moi) sur Launchpad.


dès que j'ai appuyé sur 'Stop', il se bloque ...
Francisco Corrales Morales

@FranciscoCorralesMorales Pouvez-vous l'exécuter à partir de la ligne de commande puis essayer? Une fois qu'il tombe en panne, prenez la sortie et transférez-la sur paste.ubuntu.com et reliez-la ici pour que je puisse jeter un coup d'œil. Merci!
Seth

1
Je peux confirmer que cela fonctionne très bien! Il crée un très petit fichier .gif (650 ko) avec une excellente résolution en dehors des fenêtres ouvertes, comme indiqué dans cette réponse: askubuntu.com/questions/882419/… J'ajouterais peut-être l'affiche. salle de discussion générale mis en place :)
WinEunuuchs2Unix

Le projet est-il abandonné? Il n'y a eu aucun engagement dans le référentiel depuis près de deux ans.
Flux

@flux malheureusement, entre problèmes de santé et université, oui. Le référentiel est actuellement abandonné. Cependant, le projet sur GitHub n’est pas et vous pouvez y obtenir le dernier code.
Seth

8

Il y a toutes sortes de façons compliquées et efficaces (probablement) de faire cela énumérées ici. Cependant, je n'ai jamais voulu suivre ce processus avant ni depuis. Donc, j'utilise simplement un convertisseur en ligne qui convient à mes besoins les quelques fois où je dois le faire. J'ai utilisé ce site:

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

Ce n'est pas mon site et je ne suis en aucun cas affilié à eux. Ils ne sont que ceux de mes favoris et il y en a beaucoup plus.


J'aime ça. J'utilise déjà simplescreenrecorder pour enregistrer mon ordinateur de bureau pour youtube sur occassion. Transformer le mkv en gif a donc été simple.
isaaclw

8

J'ai créé record-gif.shune version améliorée de Rob Wbyzanz-record-region :

Une interface graphique boiteuse pour byzanzaméliorer l'expérience utilisateur ( zone pouvant être sélectionnée par la souris , barre de progression des enregistrements, enregistrement pouvant être rejoué ).

bureau d'enregistrement avec shell

  • définir l'enregistrement duration;
  • définir la save_asdestination;
  • sélectionnez - avec la souris - la zone à enregistrer;
  • créer un script pour rejouer l'enregistrement (cf. $HOME/record.again).

Installer

J'ai aussi créé un script d'installation

curl --location https://git.io/record-gif.sh | bash -

1
Vous devez le faire sudo apt install autoconf byzanzavant d'exécuter ce script. il n'est pas installé par défaut dans ubuntu
Crantisz

@Crantisz merci, j'ai mis à jour le script d'installation pour installer autoconfet byzanz. Pourriez-vous l'essayer?
Édouard Lopez

Je viens de le tester sur un autre PC. Il n'y a pas de git sur mon système Ubuntu fraîchement installé. Et je ne sais pas pourquoi, mais le script s'arrête juste après la deuxième question d'apt-get Y / N. Pouvez-vous regrouper toutes les dépendances en une seule commande?
Crantisz

@Crantisz la commande est un script d'installation, si vous voulez juste enregistrer-gif.sh vous pouvez l' obtenir auprès du référentiel
Édouard Lopez

4
  1. Installez ces 3 packages: imagemagick mplayer gtk-recordmydesktop
  2. Exécutez Desktop Recorder pour capturer une partie de l'écran / de l'application à utiliser comme screencast.
  3. Télécharger à ogv2gif.shpartir de https://github.com/nicolas-raoul/ogv2gif
  4. Courir: ./ogv2gif.sh yourscreencast.ogv
  5. Le fichier GIF sera placé dans le même répertoire

100% inspiré de la réponse de maniat1k .


3

Si vous voulez devenir encore plus sophistiqué, vous pouvez utiliser une méthode plus sophistiquée que les gifs animés en utilisant la capture d’écran sur toile HTMl5. Le projet x11-canvas-screencast créera une capture d’écran animée sur une toile html5.

Vous avez peut-être vu des exemples célèbres de cette technologie sur le site Web de Sublime Text. x11-canvas-screencastCette méthode va encore plus loin en intégrant le suivi du curseur de la souris. Voici une démonstration de ce que x11-canvas-screencast produit

Le résultat est meilleur qu'un gif animé car il ne se limite pas au nombre de couleurs dont il dispose et nécessite moins de bande passante.


1
C'est bien et tout, mais vous ne pouvez pas facilement le partager, par exemple Slack, Twitter, etc.
Elijah Lynn

@ ElijahLynn très vrai. Cette solution est optimisée pour une fréquence d'images élevée, une bande passante réduite et une profondeur de couleur complète. Ce n'est pas portable (pour intégrer dans un tweet par exemple) car il nécessite JavaScript.
gene_wood

3

Ok, donc pour capturer aussi les clics de souris, la seule chose que j'ai trouvée était key-mon(via le fichier README de screenkey):

Alors je:

  • Début key-mon
  • Utilisez xrectselpour obtenir les coordonnées de l'écran mises dans une byzanzcommande
  • Lancer la byzanzcommande

... et ça ressemble un peu à ça:

out.gif

Notez que key-mon --visible_clicksi vous cliquez sur un cercle, entourez le pointeur de la souris - ce que je préférerais, mais dans Ubuntu 14.04.5 LTS, il est quelque peu cassé, car ce cercle n’apparaît pas et ne disparaît pas assez vite pour illustrer correctement les clics (c.-à-d. souris appuie et libère).


2

J'ai récemment créé une version combinée de scripts déjà publiée ici.
En gros, cela vous permet d’enregistrer une région d’écran, mais avec une interface graphique simple.

Merci à Rob W pour ces scripts sympas

Voici le code (ou l' essentiel si vous aimez):

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

2

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


2
Je ne vois pas comment screenkeygérerait les clics de souris (il semble que ce ne soit que pour les indications du clavier), cependant, son fichier README fait référence à key-monce qui peut le faire, voir ma réponse ci-dessous.
Sdaau

1

Utiliser gtk-recordmydesktopet ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

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

gtk-recordmydesktop

Créer ogv2gif.shavec 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

Utilise le :

./ogv2gif.sh yourscreencast.ogv

Références :


1

Je teste toutes les méthodes ci-dessus, la plus simple étant:

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

le fps est original et la taille gif est inférieure au fichier ogv.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.