Come creare immagini GIF animate di uno screencast?


476

Ho visto immagini GIF animate di schermate (come quella qui sotto) promosse alcune volte su questo sito come un modo per migliorare le risposte.

Immagine GIF animata

Quale toolchain viene utilizzato per crearli? Esiste un programma che lo fa automagicamente o le persone eseguono screencast, li convertono in una serie di frame statici e quindi creano le immagini GIF?


6
LICEcap (http://www.cockos.com/licecap) è molto più semplice di una qualsiasi delle soluzioni seguenti, poiché è basato sulla GUI. È gratuito come in libertà e prezzo. L'unico aspetto negativo è che devi eseguirlo tramite Wine.
Dennis,

4
Correlati: GIF screencasting; il modo UNIX dallo scambio di stack Unix e Linux.
Cristian Ciupitu,


2
Questo screenshot di esempio è stato eseguito su Windows?
Clément,

@ Clément Questa è stata anche la prima cosa che ho notato :)
UniversallyUniqueID

Risposte:


269

Sbirciare

È una nuova applicazione che ti consente di registrare facilmente GIF dal tuo schermo.

peek screencast demo

Ad ogni modo, tieni presente che le GIF hanno una tavolozza di colori molto limitata, quindi non è una buona idea usarle.

Da Ubuntu 18.10 è possibile installare direttamente Peek.

sudo apt install peek

Per le versioni precedenti di Ubuntu, è possibile installare le ultime versioni di Peek dal suo PPA .

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

Ulteriori informazioni nel repository GitHub .


2
Sì, questo è fantastico. funziona solo con X11 ed è destinato a GNOME 3.
Ajith R Nair

2
@BeastWinterwolf ed ExillustX: non pubblicare segnalazioni di bug qui, usa il tracker dei problemi in cui le persone si preoccupano davvero di vederli! Segnalalo qui: github.com/phw/peek/issues
oligofren

2
Questo è un grande strumento.
Mike,

1
@Jop V. come hai registrato un record?
milkovsky,

1
@milkovsky Non l'ho registrato. Detto questo, penso che abbiano usato una macchina virtuale e registrato.
Stommestack

272

Byzanz

Il miglior software che abbia mai trovato per registrare screencast GIF è Byzanz.

Byzanz è fantastico perché registra direttamente su GIF, la qualità e FPS sono impressionanti mantenendo al minimo le dimensioni dei file.

Installazione

Byzanz è ora disponibile dal repository universe:

sudo apt-get install byzanz

uso

Quando è installato è possibile eseguirlo in un terminale.

Questo è un piccolo esempio con cui ho fatto proprio ora

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

inserisci qui la descrizione dell'immagine


3
Grazie, bel strumento! I colori non sono sempre precisi, ma è un dettaglio minore. Ho scritto uno script di shell che aiuta a catturare una finestra (selezionata in fase di esecuzione dall'utente), pubblicata in una risposta di seguito .
Rob W,

57
Byzanz non ha alcuna UI! Devo indovinare la x, la y, la larghezza e l'altezza dell'area che voglio registrare? È un po 'ridicolo che nel 2014 dovrei ancora farlo.
Dan Dascalescu,

5
@DanDascalescu Nessuno dice che devi usarlo ... Preferisco di gran lunga un terminale piuttosto che una GUI, cosa c'è che non va?
Bruno Pereira,

31
@DanDascalescu Non c'è bisogno di indovinare. È possibile utilizzare xwininfoper ottenere le proprietà della finestra.
Marcus Møller,

4
Un modo per evitare di dover conoscere la durata in anticipo? Durante la registrazione non so mai in anticipo quanto tempo ci vorrà.
Nicolas Raoul,

236

Prima installa questo:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

queste sono le cose richieste, ImageMagick, MPlayer e Desktop Recorder. Quindi utilizzare Desktop Recorder per acquisire una parte dello schermo / dell'applicazione da utilizzare come screencast. Dopo che Desktop Recorder ha salvato la registrazione in un video OGV , MPlayer verrà utilizzato per acquisire schermate JPEG, salvandole nella directory "output".

Su un terminale:

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

Usa ImageMagick per convertire le schermate in gif animate.

convert output/* output.gif

puoi ottimizzare gli screenshot in questo modo:

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

35
un altro modo per ottimizzare gif è usare gifsicle: gifsicle -O in.gif -o out.gifho appena provato e ho ottenuto una riduzione di 100x nella dimensione del file.
Yrogirg,

10
Per chi si chiede, la prima bandiera nel comando @Yrogirg è la "O" maiuscola, non la cifra "0" :)
brandizzi

2
Wow, gifsicle ha reso il mio più veloce ma non più piccolo, e il comando di ottimizzazione del convertito lo ha reso praticamente brutto.
MalcolmOcean

6
Mi raccomando che unisce gli ultimi due convertpassaggi in una sola: convert output/* -layers Optimize output.gif. Per me, questo ha accelerato i tempi di elaborazione e ha ridotto il file di output. Non vedo alcun motivo per eseguire questi passaggi separatamente. (Non ho provato l' -fuzz 10%argomento.)
thejoshwolfe

1
Come @MalcolmOcean, l' convertaffermazione è andata oltre l'orribile. Secondo i documenti ( imagemagick.org/script/command-line-options.php#layers ), l' optimizeimplementazione può cambiare nel tempo. Ma convertun'affermazione leggermente modificata con la -coalescebandiera ha migliorato le cose, ma non ancora dove era accettabile. Ho finito per usare l' -layers optimize-transparencyimpostazione per i migliori risultati:convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif

136

Panoramica

Questa risposta contiene tre script di shell:

  1. byzanz-record-window - Per selezionare una finestra per la registrazione.
  2. byzanz-record-region - Per selezionare una parte dello schermo per la registrazione.
  3. Un semplice front-end GUI per 1, di MHC .

introduzione

Grazie Bruno Pereira per avermi fatto conoscerebyzanz ! È abbastanza utile per creare animazioni GIF. In alcuni casi i colori potrebbero essere spenti, ma le dimensioni del file compensano. Esempio: 40 secondi, 3,7 Mb .

uso

Salvare uno / tutti i seguenti due script in una cartella all'interno di $PATH. Ecco un esempio sull'uso del primo script per creare uno screencast di una finestra specifica.

  1. Correre byzanz-record-window 30 -c output.gif
  2. Vai alla finestra (alt-tab) che vuoi catturare. Cliccaci sopra.
  3. Attendere 10 secondi (hard-coded in $DELAY), in cui ci si prepara per la registrazione.
  4. Dopo il segnale acustico (definito nella beepfunzione), byzanzverrà avviato.
  5. Dopo 30 secondi (questo è il significato del 30passaggio 1), byzanztermina. Un segnale acustico verrà nuovamente trasmesso.

Ho incluso la -cbandiera byzanz-record-windowper illustrare che qualsiasi argomento al mio script di shell viene aggiunto a byzanz-recordse stesso. La -cbandiera dice byzanzdi includere anche il cursore nello screencast.
Vedi man byzanz-recordo byzanz-record --helpper maggiori dettagli.

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

Dipendenza: xrectselda xrectsel . Clonare il repository ed eseguire makeper ottenere l'eseguibile. (Se protesta non c'è makefile, run ./bootstrape ./configureprima di eseguire `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

Versione Gui di byzanz-record-window

(commento di MHC ): Mi sono preso la libertà di modificare lo script con un semplice dialogo con la 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"

17
Questi script sono conservati in qualche posto come Github? Sono super utili, sarebbe bello se fossero tenuti in un posto migliore del testo nella risposta StackOverflow.
KFro

1
@KFro Questo è Ask Ubuntu, non SO;) No, non li ho messi in un repository git, perché gli script stessi sono mal documentati (per gli utenti). La documentazione di accompagnamento è inclusa nella risposta, quindi non vedo alcun vantaggio nel suddividere i file e la documentazione in un repository Git.
Rob W,

1
Niente più crediti per il montaggio, ma fatto ;-).
Rmano,

2
Volevo solo ringraziare enormemente per questa: una risposta fantastica e mi ha aiutato molto. Ecco cosa ho finito. Mi piace usare notify-sendanche nel caso in cui il mio suono sia spento.
Daniel Buckmaster,

2
@Masi Byzanz - e questi script - funzionano bene per me nel 16.04
Jeff Puckett,

51

ffmpeg Installa ffmpeg

Uno dei migliori strumenti che uso è ffmpeg. Può prendere la maggior parte dei video da uno strumento screencast come kazame convertirlo in un altro formato.

Installa questo dal centro software : viene installato automaticamente se installi il ubuntu-restricted-extraspacchetto eccellente .

Kazam può produrre nei formati video mp4o webm. Generalmente si ottengono risultati migliori in mp4formato.

esempio GIF sintassi

La sintassi di base per convertire i video in GIF è:

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

Le GIF convertite, specialmente quelle con un frame standard al 25/29 al secondo, possono essere molto grandi. Ad esempio: un video di 15 secondi con webm da 800 Kb a 25 fps può generare fino a 435 Mb!

Puoi ridurlo con una serie di metodi:

frequenza dei fotogrammi

Usa l'opzione -r [frame-per-second]

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

Dimensioni ridotte da 435 Mb a 19 Mb

limite di dimensione del file

Usa l'opzione -fs [filesize]

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

Nota: questa è una dimensione approssimativa del file di output, quindi la dimensione può essere leggermente più grande di quanto specificato.

dimensione del video in uscita

Usa l'opzione -s [widthxheight]

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

Ciò ha ridotto le dimensioni del video di esempio 1366x768 fino a 26 Mb

loop per sempre

A volte potresti volere che la GIF sia ripetuta per sempre.

Usa l'opzione -loop_output 0

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

ottimizzare ulteriormente e ridurre

se si utilizza imagemagick convertcon un fattore di sfocatura tra il 3% e il 10%, è possibile ridurre drasticamente le dimensioni dell'immagine

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

finalmente

combinare alcune di queste opzioni per ridurre a qualcosa gestibile per Ask Ubuntu.

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

seguito da

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

esempio

inserisci qui la descrizione dell'immagine


Se si dispone di Docker e il video è demo.mkvpossibile eseguire questi comandi: 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
Per me si lamenta che non esiste alcuna opzione come -loop_output...

1
+1 Migliore risposta. Ma uno q pensi ancora ubuntu-restricted-extrassia eccellente ??
Severus Tux,

1
@ParanoidPanda ora l'opzione è -loop. Così sarebbe -loop 0. Ecco un comando funzionante 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,500è la posizione X, Y per iniziare il rettangolo 100x100. xgrabprende lo schermo come input.
sanbor,

34

Silentcast

Silentcast è un altro ottimo strumento basato su gui per la creazione di immagini GIF animate. Le sue caratteristiche includono:

  • 4 modalità di registrazione:

    1. Schermo intero

    2. Finestra interna

    3. Finestra con decorazione

    4. Selezione personalizzata

  • 3 formati di output:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (fotogrammi)

    5. .mkv

  • Nessuna installazione necessaria (portatile)

  • Directory di lavoro personalizzata

  • Fps personalizzati

Installazione

Se si desidera un'installazione regolare e si esegue una versione supportata di Ubuntu, è possibile installare Silentcast tramite PPA:

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

Se non stai eseguendo una versione supportata di Ubuntu (dovresti davvero aggiornare!) Dovrai scaricare l'ultima versione dalla pagina GitHub e soddisfare manualmente le dipendenze (puoi procurarti yad e ffmpeg da qui e qui rispettivamente) o, se stai eseguendo una versione leggermente più recente come 13.10 potresti provare a scaricare direttamente il .deb .

Se stai usando Gnome potresti voler installare l' estensione Topicons per rendere più facile l'arresto di Silentcast.

uso

Avvia Silentcast dalla GUI del tuo ambiente desktop o esegui il silentcastcomando in un terminale. Scegli le tue impostazioni e segui le istruzioni sullo schermo. Al termine della registrazione, verrà visualizzata una finestra di dialogo per l'ottimizzazione dell'output finale rimuovendo un determinato numero di fotogrammi.

Per linee guida di utilizzo più approfondite, dai un'occhiata a README, la versione online di GitHub o la versione locale memorizzata /usr/share/doc/silentcastcon zless o con il tuo editor preferito.

Esempio

Appunti:

Silentcast è ancora in fase di sviluppo e sebbene sia abbastanza stabile, potresti riscontrare alcuni bug. Se lo fai, ti preghiamo di segnalarli sul tracker dei problemi GitHub del progetto . Se hai problemi con l'installazione da PPA e stai eseguendo una versione supportata di Ubuntu lascia un commento qui sotto o contatta il manutentore (me) su Launchpad.


non appena premo 'Stop' si blocca ...
Francisco Corrales Morales,

@FranciscoCorralesMorales Puoi eseguirlo dalla riga di comando e quindi provare? Una volta che si blocca, prendi l'output e caricalo su paste.ubuntu.com e collegalo di nuovo qui in modo che io possa dare un'occhiata. Grazie!
Seth

1
Posso confermare che funziona alla grande! Crea un file .gif molto piccolo (650 KB) con una grande risoluzione al di fuori delle finestre aperte come visualizzato in questa risposta: askubuntu.com/questions/882419/… Potrei aggiungere il poster @Seth è un ragazzo eccezionale e mi ha aiutato in AU chat room generale configurarlo :)
WinEunuuchs2Unix

Il progetto è stato abbandonato? Non c'è stato alcun impegno nel repository da quasi due anni.
Flusso

@flux purtroppo, tra problemi di salute e uni, sì. Il repository è attualmente abbandonato. Il progetto su GitHub non è, tuttavia, e puoi ottenere l'ultimo codice lì.
Seth

8

Ci sono molti modi complicati e ben funzionanti (presumibilmente) per farlo elencati qui. Tuttavia, non ho mai voluto passare attraverso questo processo prima né da allora. Quindi, uso semplicemente un convertitore online che soddisfa le mie esigenze le poche volte che devo farlo. Ho usato questo sito:

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

Non è il mio sito e non sono affiliato con loro in alcun modo. Sono solo quelli nei miei segnalibri e ce ne sono molti altri.


Mi piace questo. Uso già simplescreenrecorder per registrare il mio desktop per YouTube in occasione, quindi trasformare mkv in GIF è stato facile con questo.
Isaaclw,

8

Ho creato record-gif.shuna versione migliorata di Rob Wbyzanz-record-region :

Una GUI scadente per byzanz, migliorata l'esperienza dell'utente ( area selezionabile dal mouse , barra di avanzamento della registrazione, registrazione in grado di riprodurre ).

registra desktop con shell

  • impostare la registrazione duration;
  • impostare la save_asdestinazione;
  • selezionare - con il mouse - l'area da registrare;
  • creare uno script per ripetere la registrazione (cfr $HOME/record.again.).

Installare

Ho anche creato uno script di installazione

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

1
Devi farlo sudo apt install autoconf byzanzprima di eseguire questo script. non è installato di default in Ubuntu
Crantisz,

@Crantisz grazie, ho aggiornato lo script di installazione per l'installazione autoconfe byzanz. Potresti provarlo?
Édouard Lopez,

L'ho appena testato su altri PC. Non c'è git sul mio sistema Ubuntu appena installato. E non so perché, ma lo script si interrompe subito dopo la seconda domanda Y / N apt-get. Riesci a raggruppare tutte le dipendenze in un comando?
Crantisz,

@Crantisz il comando è uno script di installazione, se vuoi solo record-gif.sh puoi ottenerlo dal repository
Édouard Lopez,

4
  1. Installa questi 3 pacchetti: imagemagick mplayer gtk-recordmydesktop
  2. Esegui Desktop Recorder per acquisire una parte dello schermo / dell'applicazione da utilizzare come screencast
  3. Scarica ogv2gif.shda https://github.com/nicolas-raoul/ogv2gif
  4. Correre: ./ogv2gif.sh yourscreencast.ogv
  5. Il file GIF verrà inserito nella stessa directory

100% ispirato dalla risposta di maniat1k .


3

Se vuoi diventare ancora più fantasioso, puoi usare un metodo più sofisticato delle gif animate usando lo screencasting su tela HTMl5. Il progetto x11-canvas-screencast creerà un'acquisizione di schermate animate su tela html5.

Potresti aver visto alcuni esempi famosi di questa tecnologia sul sito Web di Sublime Text. x11-canvas-screencastporta questo metodo un ulteriore passo avanti incorporando il tracciamento del cursore del mouse. Ecco una demo di ciò che produce x11-canvas-screencast

Il risultato è migliore di una gif animata poiché non è limitato al numero di colori che ha e richiede meno larghezza di banda.


1
È bello e tutto, ma non puoi facilmente condividerlo, ad esempio Slack, Twitter ecc.
Elijah Lynn,

@ElijahLynn molto vero. Questa soluzione è ottimizzata per frame rate elevato, larghezza di banda ridotta, profondità di colore completa. Non è portatile (ad esempio per incorporare in un tweet) in quanto richiede JavaScript.
gene_wood,

3

Ok, quindi per catturare anche i clic del mouse, l'unica cosa che ho trovato è stata key-mon(tramite il README di screenkey):

Quindi io:

  • Inizio key-mon
  • Utilizzare xrectselper inserire le coordinate dello schermo in un byzanzcomando
  • Esegui il byzanzcomando

... e sembra un po 'così:

out.gif

Si noti che key-mon --visible_clicktrarrebbe un cerchio attorno al puntatore del mouse al clic del mouse, cosa che preferirei, ma in Ubuntu 14.04.5 LTS questo è in qualche modo rotto, poiché questo cerchio non appare e scompare abbastanza velocemente per illustrare correttamente i clic (es. il mouse preme e rilascia).


2

Di recente ho creato una versione combinata di script già pubblicati qui.
Fondamentalmente, ti consente di registrare l'area dello schermo, ma con una semplice GUI.

Grazie per Rob W per aver fornito quegli script fantastici

Ecco il codice (o gist se ti piace):

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

Se desideri anche registrazioni visibili dei clic del mouse o dei tasti, allora screenkey è la soluzione migliore: https://github.com/wavexx/screenkey


2
Non vedo come screenkeygestire i clic del mouse (sembra essere solo per l'indicazione della tastiera), tuttavia, il suo README si riferisce a ciò key-monche può farlo, vedere la mia risposta di seguito.
sdaau,

1

Usa gtk-recordmydesktope ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

Esegui RecordMyDesktop acquisisci una parte dello schermo / dell'applicazione da utilizzare come screencast:

gtk-recordmydesktop

Crea ogv2gif.shcon il seguente contenuto:

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

Usalo:

./ogv2gif.sh yourscreencast.ogv

Riferimenti :


1

Ho testato tutto il metodo sopra, ho scoperto che il più semplice è:

  1. usa gtk-recordmydesktop e key-mon per ottenere un ogv
  2. ffmpeg -i xx.ogv xx.gif <- senza alcun parametro .

il file fps è originale e la dimensione gif è inferiore al file ogv.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.