Jak tworzyć animowane obrazy GIF z screencastu?

476

Widziałem animowane obrazy GIF rzutowań ekranów (jak ten poniżej) promowane kilka razy na tej stronie jako sposób na poprawę odpowiedzi.

Animowany obraz GIF

Jakiego zestawu narzędzi używa się do ich tworzenia? Czy istnieje program, który robi to automatycznie, czy też ludzie biorą screencasty, przekształcają je w szereg statycznych ramek, a następnie tworzą obrazy GIF?

andrews coś
źródło
6
LICEcap (http://www.cockos.com/licecap) jest znacznie prostszy niż którekolwiek z poniższych rozwiązań, ponieważ jest oparte na GUI. Jest darmowy, jak w wolności i cenie. Jedynym minusem jest to, że musisz uruchomić go za pośrednictwem Wine.
Dennis
4
Powiązane: Screencasting GIF; sposób UNIX z wymiany stosów Unix i Linux.
Cristian Ciupitu,
2
Czy ten przykładowy zrzut ekranu jest wykonywany w systemie Windows?
Clément
@ Clément To była pierwsza rzecz, którą zauważyłem :)
UniversallyUniqueID

Odpowiedzi:

269

Zerkać

To nowa aplikacja, która pozwala łatwo nagrywać pliki GIF z ekranu.

peek screencast demo

W każdym razie pamiętaj, że pliki GIF mają bardzo ograniczoną paletę kolorów, więc ich użycie nie jest dobrym pomysłem.

Od wersji Ubuntu 18.10 możesz bezpośrednio zainstalować Peek.

sudo apt install peek

W przypadku starszych wersji Ubuntu możesz zainstalować najnowsze wersje Peek z PPA .

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

Znajdź więcej informacji w repozytorium GitHub .

stommestack
źródło
2
Tak, ten jest świetny. działa tylko z X11 i jest skierowany na GNOME 3.
Ajith R Nair
2
@BeastWinterwolf i ExillustX: nie publikuj tutaj raportów o błędach, użyj narzędzia do śledzenia problemów, w którym ludzie naprawdę chcą je zobaczyć! Zgłoś to tutaj: github.com/phw/peek/issues
oligofren
2
To świetne narzędzie.
Mike
1
@Jop V. W jaki sposób nagrałeś płytę?
milkovsky
1
@milkovsky Nie nagrałem tego. To powiedziawszy, myślę, że użyli maszyny wirtualnej i to zarejestrowali.
stommestack
272

Byzanz

Najlepsze oprogramowanie, jakie kiedykolwiek znalazłem do nagrywania screencastów GIF to Byzanz.

Byzanz jest świetny, ponieważ nagrywa bezpośrednio do formatu GIF, jakość i liczba klatek na sekundę jest imponująca, przy zachowaniu minimalnego rozmiaru plików.

Instalacja

Byzanz jest teraz dostępny z repozytorium wszechświata:

sudo apt-get install byzanz

Stosowanie

Po zainstalowaniu możesz uruchomić go w terminalu.

To jest mały przykład, z którym właśnie to zrobiłem

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

wprowadź opis zdjęcia tutaj

Bruno Pereira
źródło
3
Dzięki, miłe narzędzie! Kolory nie zawsze są dokładne, ale to drobny szczegół. Napisałem skrypt powłoki, który pomaga w przechwytywaniu okna (wybranego przez użytkownika w środowisku wykonawczym), zamieszczony w odpowiedzi poniżej .
Rob W
57
Byzanz nie ma żadnego interfejsu użytkownika! Czy mam zgadywać x, y, szerokość i wysokość obszaru, który chcę nagrać? To trochę niedorzeczne, że w 2014 roku nadal musiałbym to zrobić.
Dan Dascalescu
5
@ DanDascalescu Nikt nie mówi, że musisz go używać ... Wolę terminal niż GUI, co jest z tym nie tak?
Bruno Pereira,
31
@DanDascalescu Nie trzeba zgadywać. Możesz użyć, xwininfoaby uzyskać właściwości okna.
Marcus Møller
4
Jakiś sposób, aby uniknąć konieczności wcześniejszego poznania czasu trwania? Podczas nagrywania nigdy nie wiem z góry, ile czasu to zajmie.
Nicolas Raoul,
236

Najpierw zainstaluj to:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

są to wymagane rzeczy, ImageMagick, MPlayer i Desktop Recorder. Następnie użyj Desktop Recorder, aby przechwycić część ekranu / aplikacji, która będzie używana jako screencast. Po zapisaniu nagrania przez Desktop Recorder w wideo OGV , MPlayer będzie używany do przechwytywania zrzutów ekranu JPEG, zapisując je w katalogu „wyjściowym”.

Na terminalu:

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

Użyj ImageMagick, aby przekonwertować zrzuty ekranu na animowane gify.

convert output/* output.gif

możesz zoptymalizować zrzuty ekranu w ten sposób:

convert output.gif -fuzz 10% -layers Optimize optimised.gif
maniat1k
źródło
35
Innym sposobem na zoptymalizowanie gif jest użycie gifsicle: gifsicle -O in.gif -o out.gifWłaśnie próbowałem i uzyskałem 100- krotną redukcję rozmiaru pliku.
Yrogirg
10
Dla tych, którzy zastanawiają się, pierwszą flagą w poleceniu @Yrogirg jest wielka litera „O”, a nie cyfra „0” :)
brandizzi
2
Wow, gifsicle sprawił, że mój był szybszy, ale nie mniejszy, a polecenie optymalizacji optymalizacji konwersji sprawiło, że był naprawdę brzydki.
MalcolmOcean
6
Polecam połączenie dwóch ostatnich convertkroków do jednego: convert output/* -layers Optimize output.gif. Dla mnie przyspieszyło to czas przetwarzania, a także zmniejszyło plik wyjściowy. Nie widzę powodu, aby robić te kroki osobno. (Nie próbowałem -fuzz 10%argumentu.)
thejoshwolfe
1
Podobnie jak @MalcolmOcean, convertoświadczenie sprawiło, że stało się ono ohydne. Zgodnie z dokumentacją ( imagemagick.org/script/command-line-options.php#layers ) optimizeimplementacja może z czasem ulec zmianie. Ale nieco poprawione convertoświadczenie z -coalesceflagą poprawiło sytuację, ale nadal nie do tego, gdzie było to do przyjęcia. Skończyło się na tym, że musiałem użyć tego -layers optimize-transparencyustawienia, aby uzyskać najlepsze wyniki:convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif
136

Przegląd

Ta odpowiedź zawiera trzy skrypty powłoki:

  1. byzanz-record-window - Aby wybrać okno do nagrywania.
  2. byzanz-record-region - Aby wybrać część ekranu do nagrywania.
  3. Prosty interfejs GUI dla 1, autorstwa MHC .

Wprowadzenie

Dzięki Bruno Pereira za przedstawienie mniebyzanz ! Jest to bardzo przydatne do tworzenia animacji GIF. W niektórych przypadkach kolory mogą być wyłączone, ale nadrabia to rozmiar pliku. Przykład: 40 sekund, 3,7 Mb .

Stosowanie

Zapisz jeden / wszystkie poniższe dwa skrypty w folderze w swoim $PATH. Oto przykład użycia pierwszego skryptu do wykonania screencastu z określonego okna.

  1. Biegać byzanz-record-window 30 -c output.gif
  2. Przejdź do okna (alt-tab), które chcesz przechwycić. Kliknij na to.
  3. Poczekaj 10 sekund (na stałe $DELAY), w których przygotowujesz się do nagrywania.
  4. Po sygnale dźwiękowym (zdefiniowanym w beepfunkcji) byzanzuruchomi się.
  5. Po 30 sekundach (co oznacza 30krok 1) byzanzkończy się. Sygnał dźwiękowy zostanie ponownie nadany.

Włączyłem -cflagę, byzanz-record-windowaby zilustrować, że wszelkie argumenty do mojego skryptu powłoki są dołączane do byzanz-recordsiebie. -cFlaga mówi byzanzsię także kursor w screencast.
Zobacz man byzanz-recordlub byzanz-record --helppo więcej szczegółów.

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

Zależność: xrectselod xrectsel . Sklonuj repozytorium i uruchom, makeaby uzyskać plik wykonywalny. (Jeśli protestuje, nie ma pliku makefile, uruchom ./bootstrapi ./configureprzed uruchomieniem `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

Wersja GUI byzanz-record-window

(komentarz MHC ): Pozwoliłem sobie na modyfikację skryptu za pomocą prostego dialogu 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"
Rob W.
źródło
17
Czy te skrypty są przechowywane w miejscu takim jak github? Są bardzo przydatne, byłoby miło, gdyby były trzymane gdzieś lepiej niż tekst w odpowiedzi StackOverflow.
KFro
1
@KFro To jest Ask Ubuntu, a nie SO;) Nie, nie umieściłem ich w repozytorium git, ponieważ same skrypty są źle udokumentowane (dla użytkowników). Załączona dokumentacja jest dołączona do odpowiedzi, więc nie widzę korzyści z dzielenia plików i dokumentacji w repozytorium Git.
Rob W
1
Żadnych napisów do edycji, ale gotowe ;-).
Rmano,
2
Chciałem tylko podziękować za to - świetna odpowiedź i bardzo mi pomógł. Oto z czym skończyłem. Lubię też używać notify-sendna wypadek, gdyby mój dźwięk był wyłączony.
Daniel Buckmaster
2
@Masi Byzanz - i te skrypty - działają dobrze dla mnie w 16.04
Jeff Puckett
51

ffmpeg Zainstaluj ffmpeg

Jednym z najlepszych narzędzi, których używam, jest ffmpeg. Może pobierać większość wideo z narzędzia do screencastu, takiego jak kazami konwertować je do innego formatu.

Zainstaluj to z centrum oprogramowania - jest instalowane automatycznie, jeśli zainstalujesz doskonały ubuntu-restricted-extraspakiet.

Kazam może wyświetlać w formatach wideo mp4lub webm. Zasadniczo uzyskuje się lepsze wyniki w mp4formacie.

przykładowa składnia tworzenia GIF-ów

Podstawowa składnia do konwersji wideo na gif to:

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

Pliki GIF przekonwertowane - szczególnie te ze standardową prędkością 25/29 klatek na sekundę mogą być bardzo duże. Na przykład - 15-sekundowe wideo 800 kb webm z prędkością 25 klatek na sekundę może przesyłać do 435 Mb!

Możesz to zmniejszyć na kilka sposobów:

częstotliwość wyświetlania klatek

Użyj opcji -r [frame-per-second]

na przykład ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif

Rozmiar zmniejszony z 435 Mb do 19 Mb

limit rozmiaru pliku

Użyj opcji -fs [filesize]

na przykład ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif

Uwaga - jest to przybliżony rozmiar pliku wyjściowego, więc rozmiar może być nieco większy niż określony.

rozmiar wyjściowego wideo

Użyj opcji -s [widthxheight]

na przykład ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif

Spowodowało to zmniejszenie przykładowego rozmiaru filmu 1366 x 768 do 26 Mb

pętla na zawsze

Czasami możesz chcieć, aby GIF zapętlał się na zawsze.

Użyj opcji -loop_output 0

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

dalej optymalizuj i zmniejszaj

jeśli używasz imagemagick convertwspółczynnika rozmycia między 3% a 10%, możesz radykalnie zmniejszyć rozmiar obrazu

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

Wreszcie

połącz niektóre z tych opcji, aby zredukować do czegoś, co można zarządzać w Ask Ubuntu.

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

śledzony przez

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

przykład

wprowadź opis zdjęcia tutaj

fossfreedom
źródło
Jeśli masz Döcker i wideo jest demo.mkvmożna uruchomić tego polecenia: 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
Dla mnie to narzeka, że ​​nie ma takiej opcji jak -loop_output...
1
+1 Najlepsza odpowiedź. Ale jedno pytanie, czy nadal uważasz, że ubuntu-restricted-extrasjest doskonałe?
Severus Tux
1
@ParanoidPanda teraz opcja jest -loop. Tak by było -loop 0. Oto działające polecenie w Ubuntu 16.04.01 ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif. +500,500jest pozycją X, Y, aby rozpocząć prostokąt 100 x 100. xgrabprzyjmuje ekran jako dane wejściowe.
sanbor
34

Silentcast

Silentcast to kolejne świetne narzędzie do tworzenia animowanych obrazów .gif w oparciu o GUI. Jego funkcje obejmują:

  • 4 tryby nagrywania:

    1. Cały ekran

    2. Okno wewnętrzne

    3. Okno z dekoracją

    4. Wybór niestandardowy

  • 3 formaty wyjściowe:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (ramki)

    5. .mkv

  • Nie wymaga instalacji (przenośny)

  • Niestandardowy katalog roboczy

  • Niestandardowe fps

Instalacja

Jeśli chcesz regularnej instalacji i używasz obsługiwanej wersji Ubuntu, możesz zainstalować Silentcast przez PPA:

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

Jeśli nie korzystasz z obsługiwanej wersji Ubuntu (powinieneś naprawdę zaktualizować!), Musisz pobrać najnowszą wersję ze strony GitHub i ręcznie spełnić zależności (możesz uzyskać yad i ffmpeg odpowiednio tutaj i tutaj ) lub, jeśli używasz nieco nowszej wersji, takiej jak 13.10, możesz spróbować pobrać bezpośrednio .deb .

Jeśli używasz Gnome, możesz chcieć zainstalować rozszerzenie Topicons, aby ułatwić zatrzymywanie Silentcast.

Stosowanie

Uruchom Silentcast z GUI środowiska pulpitu lub uruchom silentcastpolecenie w terminalu. Wybierz ustawienia i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie. Po zakończeniu nagrywania zostanie wyświetlone okno dialogowe służące do optymalizacji końcowego wyniku przez usunięcie określonej liczby ramek.

Aby uzyskać bardziej szczegółowe wskazówki dotyczące użytkowania, zapoznaj się z plikiem README, wersją GitHub online lub wersją lokalną zapisaną w programie /usr/share/doc/silentcastZless lub ulubionym edytorze.

Przykład

Uwagi:

Silentcast jest wciąż w fazie rozwoju i chociaż jest dość stabilny, możesz napotkać pewne błędy. Jeśli to zrobisz, zgłoś je na narzędziu do śledzenia problemów GitHub w projekcie . Jeśli masz problemy z instalacją z PPA i korzystasz z obsługiwanej wersji Ubuntu, zostaw komentarz poniżej lub skontaktuj się z opiekunem (mną) na Launchpad.

Seth
źródło
gdy tylko kliknę „Stop”, następuje awaria ...
Francisco Corrales Morales,
@FranciscoCorralesMorales Czy możesz uruchomić go z wiersza polecenia, a następnie spróbować? Gdy się zawiesi, weź wynik i prześlij go na paste.ubuntu.com i połącz go z powrotem tutaj, abym mógł zobaczyć. Dzięki!
Seth
1
Mogę potwierdzić, że działa świetnie! Tworzy bardzo mały plik .gif (650 KB) o dużej rozdzielczości poza otwartymi oknami, jak pokazano w tej odpowiedzi: askubuntu.com/questions/882419/... Mogę dodać plakat @Seth jest świetnym facetem i pomógł mi w AU ogólny czat skonfiguruj to :)
WinEunuuchs2Unix
Czy projekt został porzucony? Od prawie dwóch lat nie było żadnych zobowiązań w repozytorium.
Strumień
@flux niestety między problemami zdrowotnymi a Uni, tak. Repozytorium jest obecnie opuszczone. Projekt na GitHub nie jest jednak dostępny i możesz tam pobrać najnowszy kod.
Seth
8

Istnieje wiele rodzajów skomplikowanych i dobrze działających (przypuszczalnie) sposobów na zrobienie tego wymienionych tutaj. Jednak nigdy nie chciałem przejść przez ten proces wcześniej ani później. Po prostu używam konwertera online, który odpowiada moim potrzebom kilka razy, gdy muszę to zrobić. Korzystałem z tej strony:

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

To nie jest moja strona i nie jestem z nią w żaden sposób powiązany. To tylko jedna z moich zakładek i jest ich o wiele więcej.

KGIII
źródło
Lubię to. Od czasu do czasu używam już simplescreenrecorder do nagrywania pulpitu na youtube, więc przekształcenie mkv w gif było łatwe.
isaaclw
8

Stworzyłem record-gif.shulepszoną wersję Roba Wbyzanz-record-region :

Słabe GUI dla byzanz, poprawiło wrażenia użytkownika ( obszar do wyboru myszą , pasek postępu nagrywania, nagrywanie z możliwością odtwarzania ).

nagrywaj pulpit z powłoką

  • ustawić nagrywanie duration;
  • ustawić save_ascel;
  • wybierz - za pomocą myszy - obszar do nagrania;
  • utwórz skrypt, aby odtworzyć nagranie (por $HOME/record.again.).

zainstalować

Stworzyłem również skrypt instalacyjny

curl --location https://git.io/record-gif.sh | bash -
Édouard Lopez
źródło
1
Musisz to zrobić sudo apt install autoconf byzanzprzed uruchomieniem tego skryptu. nie jest domyślnie instalowany w Ubuntu
Crantisz
@Crantisz dzięki, zaktualizowałem skrypt instalacyjny, aby zainstalować autoconfi byzanz. Mógłbyś spróbować
Édouard Lopez
Właśnie przetestowałem to na innym komputerze. W moim świeżo zainstalowanym systemie Ubuntu nie ma git. I nie wiem dlaczego, ale skrypt zatrzymuje się tuż po drugim pytaniu apt / get Y / N. Czy możesz spakować wszystkie zależności w jednym poleceniu?
Crantisz
@Crantisz polecenie to skrypt instalatora, jeśli chcesz tylko record-gif.sh, możesz go pobrać z repozytorium
Édouard Lopez
4
  1. Zainstaluj te 3 pakiety: imagemagick mplayer gtk-recordmydesktop
  2. Uruchom program Desktop Recorder, aby przechwycić część ekranu / aplikacji, która będzie używana jako screencast
  3. Pobierz ogv2gif.shz https://github.com/nicolas-raoul/ogv2gif
  4. Biegać: ./ogv2gif.sh yourscreencast.ogv
  5. Plik GIF zostanie umieszczony w tym samym katalogu

100% inspiracji odpowiedzią maniat1k .

Nicolas Raoul
źródło
3

Jeśli chcesz stać się jeszcze bardziej wyrafinowany, możesz użyć bardziej wyrafinowanej metody niż animowane gify z płótnem do ekranów HTMl5. Projekt x11-canvas-screencast utworzy animowane zrzuty ekranu HTML5 Canvas.

Być może widziałeś słynne przykłady tej technologii na stronie Sublime Text. x11-canvas-screencastposuwa tę metodę o krok dalej, włączając śledzenie kursora myszy. Oto demonstracja tego, co produkuje x11-canvas-screencast

Rezultat jest lepszy niż animowany gif, ponieważ nie jest ograniczony do liczby kolorów i zajmuje mniej przepustowości.

gen_wood
źródło
1
To miłe i wszystko, ale nie możesz tego łatwo udostępnić, np. Slack, Twitter itp.
Elijah Lynn
@ElijahLynn bardzo prawdziwe. To rozwiązanie jest zoptymalizowane pod kątem wysokiej liczby klatek na sekundę, niskiej przepustowości i pełnej głębi kolorów. Nie jest przenośny (na przykład do osadzenia w tweecie), ponieważ wymaga javascript.
gene_wood,
3

Ok, więc aby przechwytywać kliknięcia myszą, jedyne, co znalazłem, to key-mon(poprzez README screenkey):

Potem ja:

  • Początek key-mon
  • Użyj, xrectselaby wstawić współrzędne ekranu do byzanzpolecenia
  • Uruchom byzanzpolecenie

... i wygląda to tak:

out.gif

Zauważ, że key-mon --visible_clickpo kliknięciu myszką rysuje okrąg wokół wskaźnika myszy - co wolałbym, ale w Ubuntu 14.04.5 LTS jest to nieco zepsute, ponieważ koło to nie pojawia się i znika wystarczająco szybko, aby poprawnie zilustrować kliknięcia (tj. naciska i zwalnia myszy).

sdaau
źródło
2

Niedawno stworzyłem połączoną wersję skryptów już tutaj opublikowanych.
Zasadniczo pozwala nagrywać region ekranu, ale z prostym GUI.

Dzięki za Rob W za udostępnienie tych fajnych skryptów

Oto kod (lub gist, jeśli chcesz):

#!/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
źródło
2

Jeśli chcesz także widzieć nagrania kliknięć myszką lub naciśnięć klawiszy, najlepszym wyborem jest screenkey: https://github.com/wavexx/screenkey

Nachtigall
źródło
2
Nie wiem, jak screenkeyporadziłby sobie z kliknięciami myszy (wydaje się, że jest to tylko wskazanie klawiatury), jednak jego README odnosi się do tego, key-monco może to zrobić, zobacz moją odpowiedź poniżej.
sdaau
1

Użyj gtk-recordmydesktopi ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

Uruchom RecordMyDesktop przechwytuj część ekranu / aplikacji, aby użyć jej jako screencast:

gtk-recordmydesktop

Utwórz ogv2gif.shz następującą zawartością:

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

Użyj tego :

./ogv2gif.sh yourscreencast.ogv

Bibliografia :

Fedir RYKHTIK
źródło
1

Testuję wszystkie powyższe metody, okazało się, że najprostszym z nich jest:

  1. użyj gtk-recordmydesktop i key-mon, aby uzyskać OGV
  2. ffmpeg -i xx.ogv xx.gif <- bez żadnego parametru .

fps jest oryginalny, a rozmiar gif jest mniejszy niż plik ogv.

utopic eexpress
źródło