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.
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?
Est une nouvelle application qui vous permet d’enregistrer facilement des GIF à partir de votre écran.
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 GitHub repo .
Le meilleur logiciel que j'ai jamais trouvé pour enregistrer des screencasts GIF est Byzanz.
Byzanz est formidable car il enregistre directement au format GIF, sa qualité et ses FPS sont impressionnants, tout en maintenant la taille des fichiers à un minimum.
Byzanz est maintenant disponible dans le référentiel de l'univers:
Sudo apt-get install byzanz
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
Installez d'abord ceci:
Sudo apt-get install imagemagick mplayer gtk-recordmydesktop
ce sont les éléments requis, ImageMagick, MPlayer et Desktop Recorder. Ensuite, utilisez 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 un 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
Cette réponse contient trois scripts Shell:
byzanz-record-window
- Pour sélectionner une fenêtre pour l'enregistrement.byzanz-record-region
- Pour sélectionner une partie de l'écran pour l'enregistrement.Merci Bruno Pereira pour me présentant 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,7 Mo .
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.
byzanz-record-window 30 -c output.gif
$DELAY
), pendant lesquelles vous préparez l'enregistrement.beep
), byzanz
démarre.30
à l'étape 1), byzanz
se termine. Un bip sera diffusé à nouveau.J'ai inclus l'indicateur -c
dans byzanz-record-window
pour illustrer que tous les arguments de mon script Shell sont ajoutés à byzanz-record
lui-même. L'indicateur -c
indique à byzanz
d'inclure également le curseur dans la capture d'écran.
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épendances: xrectsel
from xrectsel . Clonez le référentiel et exécutez make
pour obtenir le fichier exécutable. (Si elle ne possède pas de fichier Make, lancez ./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
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"
Un des meilleurs outils que j'utilise est ffmpeg
. Il peut prendre la plupart des vidéos d'un outil de capture vidéo tel que kazam
et les convertir en un autre format.
Installez-le depuis software-center - il s’installera automatiquement si vous installez l’excellent paquet ubuntu-restricted-extras
.
Kazam peut générer les formats vidéo mp4
ou webm
. Généralement, vous obtenez de meilleurs résultats avec le format mp4
.
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:
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
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.
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.
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
si vous utilisez imagemagick
convert
avec 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
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
Silentcast est un autre excellent outil graphique permettant de créer des images animées .gif. Ses caractéristiques comprennent:
4 modes d'enregistrement:
Écran entier
Fenêtre intérieure
Fenêtre avec décoration
Sélection personnalisée
3 formats de sortie:
.gif
.mp4
.webm
.png
(frames)
.mkv
Aucune installation nécessaire (portable)
Répertoire de travail personnalisé
Fps personnalisés
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 depuis la page GitHub et satisfaire manuellement les dépendances (vous pouvez vous procurer yad et ffmpeg à partir de ici et ici respectivement) ou, si vous utilisez une version légèrement plus récente telle que 13.10, vous pouvez essayer télécharger le fichier .deb directement .
Si vous utilisez Gnome, vous voudrez peut-être installer extension Topicons pour faciliter l’arrêt de Silentcast.
Démarrez Silentcast à partir de l'interface graphique de votre environnement de bureau ou exécutez la commande silentcast
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 version en ligne de GitHub , soit la version locale stockée dans /usr/share/doc/silentcast
avec zless ou votre éditeur favori.
Silentcast est encore en phase de développement et bien que très stable, vous pourriez rencontrer des bugs. Si vous le faites, veuillez les signaler 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 prise en charge d’Ubuntu, laissez un commentaire ci-dessous ou contactez le responsable (moi) sur le tableau de bord.
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:
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'ai créé record-gif.sh
, une version améliorée de Rob W's byzanz-record-region
:
Une interface graphique boiteuse pour
byzanz
, a amélioré l'expérience utilisateur ( la zone sélectionnable par la souris , la barre de progression de l'enregistrement, enregistrement pouvant être rejoué ).
duration
;save_as
destination;$HOME/record.again
).J'ai aussi créé un script d'installation
curl --location https://git.io/record-gif.sh | bash -
imagemagick
mplayer
gtk-recordmydesktop
ogv2gif.sh
depuis https://github.com/nicolas-raoul/ogv2gif./ogv2gif.sh yourscreencast.ogv
100% inspiré de réponse de maniat1k .
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 déjà vu quelques exemples célèbres de cette technologie sur le site Web de Sublime Text. x11-canvas-screencast
va encore plus loin dans cette méthode en incorporant le suivi du curseur de la souris. Voici une démo 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.
Ok, donc pour capturer aussi les clics de souris, la seule chose que j’ai trouvée est key-mon
(via le README de screenkey
):
Sudo apt-get install key-mon
Alors je:
key-mon
xrectsel
pour obtenir les coordonnées de l'écran dans une commande byzanz
byzanz
... et ça ressemble un peu à ça:
Notez que key-mon --visible_click
dessine un cercle autour du pointeur de la souris lorsque vous cliquez dessus - 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 rapidement pour illustrer correctement les clics ( c.-à-d. souris appuie et libère).
Si vous souhaitez également des enregistrements visibles de clics de souris ou de touches, alors screenkey est votre meilleur choix: https://github.com/wavexx/screenkey
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 pour Rob W pour avoir fourni ces scripts sympas
Voici le code (ou Gist 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"
Utilisez gtk-recordmydesktop
and 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éez 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
Utilise le :
./ogv2gif.sh yourscreencast.ogv
Références :
Je teste toutes les méthodes ci-dessus, la plus simple étant:
le fps est original et la taille gif est inférieure au fichier ogv.