Wie erstelle ich animierte GIF-Bilder eines Screencasts?

476

Ich habe einige Male animierte GIF-Bilder von Screencasts (wie die folgende) auf dieser Site gesehen, um die Antworten zu verbessern.

Animiertes GIF-Bild

Mit welcher Toolchain werden diese erstellt? Gibt es ein Programm, das dies automatisch ausführt, oder nehmen Leute Screencasts auf, konvertieren sie in eine Reihe statischer Frames und erstellen dann die GIF-Bilder?

undetwas
quelle
6
LICEcap (http://www.cockos.com/licecap) ist viel einfacher als jede der folgenden Lösungen, da es auf einer grafischen Benutzeroberfläche basiert. Es ist kostenlos wie in Freiheit und Preis. Der einzige Nachteil ist, dass Sie es über Wine ausführen müssen.
Dennis
4
Verwandte: GIF-Screencasting; auf UNIX-Weise von Unix & Linux Stack Exchange.
Cristian Ciupitu
2
Ist dieses Beispiel-Screenshot unter Windows aufgenommen?
Clément
@ Clément Das ist mir auch als erstes aufgefallen :)
UniversallyUniqueID

Antworten:

269

Spähen

Ist eine neue Anwendung, mit der Sie ganz einfach GIFs von Ihrem Bildschirm aufnehmen können.

Schauen Sie sich die Screencast-Demo an

Wie auch immer, denken Sie daran, dass GIFs eine sehr begrenzte Farbpalette haben, daher ist es keine gute Idee, sie zu verwenden.

Seit Ubuntu 18.10 können Sie Peek direkt installieren.

sudo apt install peek

Für ältere Versionen von Ubuntu können Sie die neuesten Versionen von Peek von dessen PPA installieren .

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

Weitere Informationen finden Sie im GitHub-Repo .

stommestack
quelle
2
Ja, das ist großartig. Es funktioniert nur mit X11 und ist auf GNOME 3 ausgerichtet.
Ajith R Nair
2
@BeastWinterwolf und ExillustX: Posten Sie hier keine Fehlerberichte, verwenden Sie den Issue-Tracker, in dem sich die Leute wirklich darum kümmern, sie zu sehen! Melde es hier: github.com/phw/peek/issues
oligofren
2
Dies ist ein großartiges Werkzeug.
Mike
1
@Jop V. Wie hast du eine Aufnahme von einer Aufnahme gemacht?
Milkovsky
1
@milkovsky Ich habe das nicht aufgenommen. Nachdem dies gesagt wurde, denke ich, dass sie eine virtuelle Maschine verwendet und dies aufgezeichnet haben.
Stommestack
272

Byzanz

Die beste Software, die ich je für die Aufzeichnung von GIF-Screencasts gefunden habe, ist Byzanz.

Byzanz ist großartig, weil es direkt in GIF aufzeichnet, die Qualität und die FPS beeindruckend sind und gleichzeitig die Größe der Dateien auf ein Minimum beschränkt bleibt.

Installation

Byzanz ist jetzt im Universums-Repository verfügbar:

sudo apt-get install byzanz

Verwendungszweck

Wenn es installiert ist, können Sie es in einem Terminal ausführen.

Dies ist ein kleines Beispiel, mit dem ich gerade gearbeitet habe

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

Bildbeschreibung hier eingeben

Bruno Pereira
quelle
3
Danke, schönes Werkzeug! Die Farben sind nicht immer genau, aber das ist ein kleines Detail. Ich habe ein Shell - Skript geschrieben , das mit der Erfassung eines Fensters (durch den Benutzer ausgewählt auf der Laufzeit) hilft, in diesem Thema geschrieben unten eine Antwort .
Rob W
57
Byzanz hat keine Benutzeroberfläche! Soll ich x, y, Breite und Höhe des aufzunehmenden Bereichs erraten? Es ist ein bisschen lächerlich, dass ich das 2014 noch tun muss.
Dan Dascalescu
5
@DanDascalescu Niemand sagt, dass Sie es verwenden müssen ... Ich bevorzuge ein Terminal gegenüber einer grafischen Benutzeroberfläche. Was ist daran falsch?
Bruno Pereira
31
@ DanDascalescu Es gibt keinen Grund zu raten. Mit können xwininfoSie die Fenstereigenschaften abrufen.
Marcus Møller
4
Wie kann man vermeiden, die Dauer im Voraus zu kennen? Bei der Aufnahme weiß ich nie im Voraus, wie viel Zeit es dauern wird.
Nicolas Raoul
236

Zuerst installieren Sie dies:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

das sind die benötigten Sachen, ImageMagick, MPlayer und Desktop Recorder. Verwenden Sie dann Desktop Recorder , um einen Teil des Bildschirms / der Anwendung zu erfassen, der als Screencast verwendet werden soll. Nachdem der Desktop Recorder die Aufnahme in einem OGV-Video gespeichert hat , wird MPlayer zum Aufnehmen von JPEG-Screenshots verwendet, die im Ausgabeverzeichnis gespeichert werden .

Auf einem Terminal:

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

Verwenden Sie ImageMagick , um die Screenshots in animierte Gifs zu konvertieren.

convert output/* output.gif

Sie können die Screenshots folgendermaßen optimieren:

convert output.gif -fuzz 10% -layers Optimize optimised.gif
maniat1k
quelle
35
Eine andere Möglichkeit zur Optimierung von GIFs ist die Verwendung von GIFsicle: gifsicle -O in.gif -o out.gifIch habe gerade versucht , die Dateigröße um das 100-fache zu reduzieren.
Yrogirg
10
Für diejenigen, die sich fragen, ist die erste Flagge in @Yrogirg Befehl ein Großbuchstabe "O", nicht die Ziffer "0" :)
Brandizzi
2
Wow, Gifsicle hat meine nur schneller gemacht, aber nicht kleiner, und der Befehl zum Optimieren der Konvertierung hat sie wirklich hässlich gemacht.
MalcolmOcean
6
Ich empfehle die letzten beiden convertKombinationsschritte in einem: convert output/* -layers Optimize output.gif. Für mich hat dies die Verarbeitungszeit verkürzt und die Ausgabedatei verkleinert. Ich sehe keinen Grund, diese Schritte separat durchzuführen. (Ich habe das -fuzz 10%Argument nicht ausprobiert .)
thejoshwolfe
1
Wie bei @MalcolmOcean convertmachte es die Aussage mehr als schrecklich. Gemäß den Dokumenten ( imagemagick.org/script/command-line-options.php#layers ) kann sich die optimizeImplementierung im Laufe der Zeit ändern. Aber eine leicht überarbeitete convertAussage mit der -coalesceFlagge verbesserte die Dinge, aber immer noch nicht dahin, wo es akzeptabel war. -layers optimize-transparencyAm Ende musste ich die Einstellung für die besten Ergebnisse verwenden:convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif
136

Überblick

Diese Antwort enthält drei Shell-Skripte:

  1. byzanz-record-window - Zum Auswählen eines Fensters für die Aufnahme.
  2. byzanz-record-region - Um einen Teil des Bildschirms für die Aufnahme auszuwählen.
  3. Ein einfaches GUI-Frontend für 1 von MHC .

Einführung

Danke Bruno Pereira, dass du mich vorgestellt hastbyzanz ! Es ist sehr nützlich zum Erstellen von GIF-Animationen. In einigen Fällen sind die Farben möglicherweise deaktiviert, die Dateigröße macht dies jedoch wieder wett. Beispiel: 40 Sekunden, 3,7 MB .

Verwendungszweck

Speichern Sie eines / alle der folgenden zwei Skripte in einem Ordner in Ihrem $PATH. Hier ist ein Beispiel zur Verwendung des ersten Skripts, um einen Screencast eines bestimmten Fensters zu erstellen.

  1. Lauf byzanz-record-window 30 -c output.gif
  2. Gehen Sie zu dem Fenster (Alt-Tab), das Sie erfassen möchten. Klick es an.
  3. Warten Sie 10 Sekunden (fest programmiert $DELAY), bevor Sie die Aufnahme vorbereiten.
  4. Nach dem Piepton (in der beepFunktion definiert ) byzanzwird gestartet.
  5. Nach 30 Sekunden (das ist die Bedeutung von 30in Schritt 1), byzanzendet. Es ertönt erneut ein Piepton.

Ich habe das -cFlag byzanz-record-windoweingefügt, um zu veranschaulichen, dass alle Argumente zu meinem Shell-Skript an sich byzanz-recordselbst angehängt werden . Die -cFlagge sagt byzanz, dass der Cursor auch in den Screencast aufgenommen werden soll.
Siehe man byzanz-recordoder byzanz-record --helpfür weitere Details.

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

Abhängigkeit: xrectselvon xrectsel . Klonen Sie das Repository und führen Sie es aus make, um die ausführbare Datei abzurufen. (Wenn es dagegen protestiert, gibt es kein Makefile, führe aus ./bootstrapund ./configuremache das vorher ausgeführte `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

GUI-Version von byzanz-record-window

(Kommentar von MHC ): Ich habe mir erlaubt, das Skript mit einem einfachen GUI-Dialog zu ändern

#!/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
quelle
17
Werden diese Skripte an einem Ort wie Github aufbewahrt? Sie sind super nützlich, es wäre schön, wenn sie an einem besseren Ort als Text in der StackOverflow-Antwort aufbewahrt würden.
KFro
1
@KFro Dies ist Ask Ubuntu, nicht SO;) Nein, ich habe sie nicht in ein Git-Repository gestellt, da die Skripte selbst (für Benutzer) schlecht dokumentiert sind. Die dazugehörige Dokumentation ist in der Antwort enthalten, daher sehe ich keinen Vorteil darin, die Dateien und die Dokumentation in einem Git-Repository aufzuteilen.
Rob W
1
Keine Credits mehr zum Bearbeiten, aber erledigt ;-).
Rmano
2
Ich wollte nur ein großes Dankeschön dafür sagen - tolle Antwort und mir sehr geholfen. Hier ist, womit ich gelandet bin. Ich benutze es notify-sendauch gerne, falls mein Sound aus ist.
Daniel Buckmaster
2
@Masi Byzanz - und diese Skripte - funktionieren gut für mich am 16.04.
Jeff Puckett
51

ffmpeg Installieren Sie ffmpeg

Eines der besten Werkzeuge, die ich benutze, ist ffmpeg. Es kann die meisten Videos von einem Screencast-Tool wie beispielsweise aufnehmen kazamund in ein anderes Format konvertieren.

Installieren Sie dies vom Software-Center - es wird automatisch installiert, wenn Sie das ausgezeichnete ubuntu-restricted-extrasPaket installieren .

Kazam kann in den Videoformaten mp4oder ausgeben webm. Im Allgemeinen erhalten Sie bessere Ergebnisse bei der Ausgabe im mp4Format.

Beispiel für eine GIF-Syntax

Die grundlegende Syntax zum Konvertieren von Video in GIF lautet:

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

GIFs konvertiert - insbesondere solche mit einer Standard-Bildrate von 25/29 Bildern pro Sekunde können sehr groß sein. Zum Beispiel - ein 15-Sekunden-Video mit 800 KBit / s und 25 fps kann auf 435 MBit / s ausgegeben werden!

Sie können dies durch eine Reihe von Methoden reduzieren:

Framerate

Verwenden Sie die Option -r [frame-per-second]

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

Die Größe wurde von 435 MB auf 19 MB reduziert

Dateigrößenbeschränkung

Verwenden Sie die Option -fs [filesize]

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

Hinweis - Dies ist eine ungefähre Größe der Ausgabedatei, daher kann die Größe etwas größer als angegeben sein.

Größe des Ausgabevideos

Verwenden Sie die Option -s [widthxheight]

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

Dadurch wurde die Videogröße des Beispiels 1366 x 768 auf 26 MB reduziert

Schleife für immer

Manchmal möchten Sie vielleicht, dass das GIF für immer wiederholt wird.

Verwenden Sie die Option -loop_output 0

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

weiter optimieren und schrumpfen

Wenn Sie imagemagick converteinen Unschärfefaktor zwischen 3% und 10% verwenden, können Sie die Bildgröße drastisch reduzieren

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

schließlich

Kombinieren Sie einige dieser Optionen, um sie auf etwas zu reduzieren, das für Ask Ubuntu überschaubar ist.

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

gefolgt von

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

Beispiel

Bildbeschreibung hier eingeben

fossfreedom
quelle
Wenn Sie Docker und Ihr Video demo.mkvkönnen Sie führen diese Befehle: 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
Für mich beschwert es sich, dass es keine solche Option wie -loop_output...
1
+1 Beste Antwort. Aber eine Frage, die Sie immer noch für ubuntu-restricted-extrasexzellent halten?
Severus Tux
1
@ParanoidPanda jetzt ist die Option -loop. So würde es sein -loop 0. Hier ist ein funktionierender Befehl in Ubuntu 16.04.01 ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif. +500,500ist die X, Y Position um das 100x100 Rechteck zu starten. xgrabNimmt den Bildschirm als Eingabe.
Sanbor
34

Silentcast

Silentcast ist ein weiteres großartiges GUI-basiertes Tool zum Erstellen von animierten GIF-Bildern. Seine Eigenschaften umfassen:

  • 4 Aufnahmemodi:

    1. Gesamter Bildschirm

    2. Innenfenster

    3. Fenster mit Dekoration

    4. Benutzerdefinierte Auswahl

  • 3 Ausgabeformate:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (Frames)

    5. .mkv

  • Keine Installation notwendig (portabel)

  • Benutzerdefiniertes Arbeitsverzeichnis

  • Benutzerdefinierte FPS

Installation

Wenn Sie eine reguläre Installation wünschen und eine unterstützte Version von Ubuntu ausführen, können Sie Silentcast mit PPA installieren:

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

Wenn Sie keine unterstützte Version von Ubuntu verwenden (Sie sollten wirklich ein Upgrade durchführen!), Müssen Sie die neueste Version von der GitHub-Seite herunterladen und die Abhängigkeiten manuell erfüllen (Sie können yad und ffmpeg von hier bzw. hier beziehen). Wenn Sie eine etwas aktuellere Version wie 13.10 verwenden, können Sie versuchen, die .deb-Datei direkt herunterzuladen .

Wenn Sie Gnome verwenden, möchten Sie möglicherweise die Topicons-Erweiterung installieren , um das Stoppen von Silentcast zu vereinfachen.

Verwendungszweck

Starten Sie Silentcast über die Benutzeroberfläche Ihres Desktops oder führen Sie den silentcastBefehl in einem Terminal aus. Wählen Sie Ihre Einstellungen und befolgen Sie die Anweisungen auf dem Bildschirm. Wenn Sie mit der Aufnahme fertig sind, wird ein Dialogfeld zur Optimierung der endgültigen Ausgabe angezeigt, in dem eine bestimmte Anzahl von Frames entfernt wird.

Weitere Informationen zu den Verwendungsrichtlinien finden Sie in der README-Datei, entweder in der Online-Version von GitHub oder in der lokalen Version, die /usr/share/doc/silentcastmit zless oder Ihrem bevorzugten Editor gespeichert wurde .

Beispiel

Anmerkungen:

Silentcast befindet sich noch in der Entwicklungsphase und obwohl es recht stabil ist, können einige Fehler auftreten. In diesem Fall melden Sie sie bitte im GitHub Issues Tracker des Projekts . Wenn Sie Probleme bei der Installation von der PPA haben und eine unterstützte Version von Ubuntu ausführen, hinterlassen Sie unten einen Kommentar oder wenden Sie sich an den Maintainer (mich) auf Launchpad.

Seth
quelle
Sobald ich 'Stop' drücke, stürzt es ab ...
Francisco Corrales Morales
@FranciscoCorralesMorales Können Sie es über die Befehlszeile ausführen und dann versuchen? Sobald es abstürzt, nimm die Ausgabe und lade sie auf paste.ubuntu.com hoch und verlinke sie hierher zurück, damit ich einen Blick darauf werfen kann. Vielen Dank!
Seth
1
Ich kann bestätigen, dass das großartig funktioniert! Es wird eine sehr kleine (650 KB) .gif-Datei mit einer hervorragenden Auflösung außerhalb von geöffneten Fenstern erstellt. Die Antwort lautet : askubuntu.com/questions/882419/… Ich könnte das Poster hinzufügen. @Seth ist ein großartiger Typ und hat mir in AU geholfen allgemeiner Chat-Raum einrichten :)
WinEunuuchs2Unix
Wird das Projekt abgebrochen? Es wurden seit fast zwei Jahren keine Commits für das Repository durchgeführt.
Flux
@flux leider zwischen gesundheitlichen problemen und uni, ja. Das Repository wird derzeit aufgegeben. Das Projekt auf GitHub ist jedoch nicht und Sie können den neuesten Code dort erhalten.
Seth
8

Es gibt alle möglichen komplizierten und (vermutlich) gut funktionierenden Methoden, um dies zu tun. Ich wollte diesen Prozess jedoch noch nie durchlaufen. Daher verwende ich einfach einen Online-Konverter, der meinen Bedürfnissen nur wenige Male entspricht. Ich habe diese Seite benutzt:

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

Es ist nicht meine Seite und ich bin in keiner Weise mit ihnen verbunden. Sie sind nur die in meinen Lesezeichen und es gibt viele mehr.

KGIII
quelle
Ich mag das. Ich benutze bereits Simplescreen-Rekorder, um gelegentlich meinen Desktop für Youtube aufzuzeichnen.
Isaaclw
8

Ich habe record-gif.sheine verbesserte Version von Rob W erstelltbyzanz-record-region :

Eine lahme GUI für byzanzverbesserte das Benutzererlebnis ( mauswählbarer Bereich , Fortschrittsanzeige für Aufzeichnungen, wiedergabefähige Aufzeichnung ).

Desktop mit Shell aufnehmen

  • Aufnahme einstellen duration;
  • gesetzt save_asBestimmungsort;
  • Wählen Sie mit der Maus den aufzunehmenden Bereich aus.
  • Erstellen Sie ein Skript, um die Aufnahme abzuspielen (vgl. $HOME/record.again).

Installieren

Ich habe auch ein Installationsskript erstellt

curl --location https://git.io/record-gif.sh | bash -
Édouard Lopez
quelle
1
Sie müssen dies tun, sudo apt install autoconf byzanzbevor Sie dieses Skript ausführen. Es ist nicht standardmäßig in Ubuntu
Crantisz
@ Crantisz, danke, ich habe das Installationsskript aktualisiert, um zu installieren autoconfund byzanz. Könnten Sie es versuchen?
Édouard Lopez
Ich habe es gerade auf einem anderen PC getestet. Auf meinem frisch installierten Ubuntu-System ist kein Git. Und ich weiß nicht warum, aber das Drehbuch stoppt kurz nach der zweiten passenden Y / N-Frage. Können Sie alle Abhängigkeiten in einem Befehl packen?
Crantisz
@Crantisz Der Befehl ist ein Installationsskript. Wenn Sie nur record-gif.sh möchten, können Sie es vom
Édouard Lopez,
4
  1. Installieren Sie diese 3 Pakete: imagemagick mplayer gtk-recordmydesktop
  2. Führen Sie Desktop Recorder aus , um einen Teil des Bildschirms / der Anwendung zu erfassen, der als Screencast verwendet werden soll
  3. Laden Sie es ogv2gif.shvon https://github.com/nicolas-raoul/ogv2gif herunter
  4. Lauf: ./ogv2gif.sh yourscreencast.ogv
  5. Die GIF-Datei wird in dasselbe Verzeichnis gestellt

100% inspiriert von der Antwort von maniat1k .

Nicolas Raoul
quelle
3

Wenn Sie noch ausgefeilter werden möchten, können Sie eine ausgefeiltere Methode als animierte Gifs mit HTMl5-Leinwand-Screencasting verwenden. Das x11-canvas-screencast- Projekt erstellt eine animierte HTML5-Leinwand- Bildschirmaufnahme.

Vielleicht haben Sie einige berühmte Beispiele dieser Technologie auf der Sublime Text-Website gesehen. x11-canvas-screencastbringt diese Methode durch die Verfolgung des Mauszeigers einen Schritt weiter. Hier ist eine Demo dessen, was x11-canvas-screencast produziert

Das Ergebnis ist besser als bei einem animierten GIF, da es nicht auf die Anzahl der Farben beschränkt ist und weniger Bandbreite benötigt.

gene_wood
quelle
1
Das ist schön und alles, aber Sie können dies nicht einfach teilen, z. B. Slack, Twitter usw.
Elijah Lynn
@ ElijahLynn sehr wahr. Diese Lösung ist für hohe Bildrate, niedrige Bandbreite und volle Farbtiefe optimiert. Es ist nicht portierbar (zum Beispiel zum Einbetten in einen Tweet), da es Javascript erfordert.
gene_wood
3

Ok, um auch Mausklicks zu erfassen, habe ich nur folgendes gefunden key-mon(über die README von screenkey):

Dann ich:

  • Anfang key-mon
  • Verwenden Sie xrectseldiese Option , um die Bildschirmkoordinaten in einen byzanzBefehl einzufügen
  • Führen Sie den byzanzBefehl aus

... und es sieht ungefähr so ​​aus:

out.gif

Beachten Sie, dass key-mon --visible_clickbeim Mausklick ein Kreis um den Mauszeiger gezogen wird - was ich vorziehen würde, aber in Ubuntu 14.04.5 LTS ist dies etwas unterbrochen, da dieser Kreis nicht schnell genug erscheint und verschwindet, um die Klicks korrekt darzustellen (d. H Drücken und Loslassen der Maus).

sdaau
quelle
2

Ich habe kürzlich eine kombinierte Version von Skripten erstellt, die bereits hier veröffentlicht wurden.
Grundsätzlich können Sie Bildschirmbereiche aufzeichnen, jedoch mit einer einfachen grafischen Benutzeroberfläche.

Vielen Dank für Rob W für die Bereitstellung dieser coolen Skripte

Hier ist der Code (oder das Wesentliche, wenn Sie möchten ):

#!/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
quelle
2

Wenn Sie auch sichtbare Aufzeichnungen von Mausklicks oder Tastenanschlägen wünschen, ist screenkey die beste Wahl: https://github.com/wavexx/screenkey

nachtigall
quelle
2
Ich verstehe nicht, wie screenkeymit Mausklicks umgegangen wird (es scheint nur zur Anzeige auf der Tastatur zu sein). Die README-Datei verweist jedoch darauf, key-monwas dies tun kann. Siehe meine Antwort unten.
Sdaau
1

Verwenden gtk-recordmydesktopund ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

Führen Sie RecordMyDesktop aus und erfassen Sie einen Teil des Bildschirms / der Anwendung, der / die als Screencast verwendet werden soll:

gtk-recordmydesktop

Erstellen Sie ogv2gif.shmit folgenden Inhalten:

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

Benutze es :

./ogv2gif.sh yourscreencast.ogv

Verweise :

Fedir RYKHTIK
quelle
1

Ich teste alle oben genannten Methoden. Die einfachste ist:

  1. Verwenden Sie gtk-recordmydesktop und key-mon , um ein ogv zu erhalten
  2. ffmpeg -i xx.ogv xx.gif <- ohne Parameter .

das fps ist original und die gif größe ist kleiner als die ogv datei.

utopischer Ausdruck
quelle