Hogyan lehet animált GIF-képeket létrehozni egy screencaston?

422

A képernyőn megjelenő animált GIF képeket (például az alábbiakban) néhányszor ezen az oldalon reklámozták a válaszok javítására.

Milyen eszköztárat használnak ezek létrehozásához? Van-e olyan program, amely ezt automatikussá teszi, vagy olyan embereket, akik szitázást végeznek, statikus keretekké konvertálják, majd létrehozzák a GIF-képeket?

    
készlet andrewsomething 25.02.2012 20:19
forrás

15 válasz

177

Peek egy új alkalmazás, amely segítségével könnyen felveheti a GIF-eket a képernyőn.

Mindemellett ne feledje, hogy a GIF-eknek nagyon korlátozott színpalettája van, ezért nem jó ötlet használni őket.

A Peek Ubuntu legújabb verzióit telepítheti PPA-ról .

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

További információ a GitHub repo-ban: link

    
válasz adott Jop V. 06.10.2016 23:36
forrás
258

Legjobb szoftver, amit valaha találtam a GIF képernyőképek rögzítéséhez, Byzanz.

A Byzanz nagyszerű, mert közvetlenül rögzíti a GIF-t, a minőség és az FPS látványos, miközben a fájlok méretét minimális szinten tartja.

Telepítés

A Byzanz mostantól elérhető a világegyetem repository-ban:

sudo apt-get install byzanz

Használat

Ha telepítve van, futtathatja azt egy terminálon.

Ez egy kicsi példa, amit csak most tettem

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

    
válasz adott Bruno Pereira 19.04.2012 21:47
forrás
233

Először telepítse ezt:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

ezek a szükséges dolgok, az ImageMagick, az MPlayer és a Desktop Recorder. Ezután használja az Asztali felvevőkészülék lehetőséget a képernyő / alkalmazás egy részének elfogadására, amelyet a screencast használatához használhat. Miután a számítógépes író mentette a felvételt egy OGV-videóra , az MPlayer fog felhasználni a JPEG-screenshotok rögzítésére, a "kimeneti" könyvtárba mentve.

Egy terminálon:

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

A ImageMagick használatával konvertálja a screenshotokat animált gifekké.

convert output/* output.gif

a képernyőképeket így optimalizálhatja:

convert output.gif -fuzz 10% -layers Optimize optimised.gif
    
válasz adott maniat1k 25.02.2012 20:40
forrás
136

Áttekintés

Ez a válasz három parancsfájlt tartalmaz:

  1. byzanz-record-window - A felvétel ablakának kiválasztása.
  2. byzanz-record-region - A képernyő egy részét kiválasztja a felvételhez.
  3. Egy egyszerű GUI front-end az 1-hez MHC .

Bevezetés

Köszönöm Bruno Pereira-nak bemutat byzanz ! Ez nagyon hasznos GIF-animációk készítéséhez. Bizonyos esetekben a színek kikapcsolódhatnak, de a fájlméret miatt ez megakadályozza. Például: 40 másodperc, 3,7 MB .

Használat

Mentse az alábbi két szkript egyikét / mindegyikét a$PATH -ban található mappába. Íme egy példa arra, hogy az első szkriptet egy adott ablak megjelenítéséhez készítsük.

  1. Runbyzanz-record-window 30 -c output.gif
  2. Menjen az elfoglalni kívánt ablakhoz (alt-lap). Kattintson rá.
  3. Várjon 10 másodpercig (kemény kódolás:$DELAY), amelyen felkészül a felvételre.
  4. A csipogás után (beep függvényben)byzanz indul.
  5. 30 másodperc után (ez a30 jelentése az 1. lépésben), abyzanz véget ér. Egy sípszó újra sugároz.

A-c zászlótbyzanz-record-window -ban vettem fel, hogy illusztráljam, hogy az én shell-parancsfájlomhoz tartozó argumentumok hozzá vannak adva abyzanz-record -hoz. A-c flag azt mondja, hogy abyzanz tartalmazza a kurzort a screencast-ban is További részletekért lásd: man byzanz-record vagybyzanz-record --help p>

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 }' <<< "$XWININFO")
read Y <<< $(awk -F: '/Absolute upper-left Y/{print }' <<< "$XWININFO")
read W <<< $(awk -F: '/Width/{print }' <<< "$XWININFO")
read H <<< $(awk -F: '/Height/{print }' <<< "$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

Függőség:xrectsel a xrectsel . Klaonizálja az adattárat, és futtassa amake -ot a végrehajtható fájl megszerzéséhez. (Ha tiltakozik, nincs makefile, futtasd a./bootstrap -ot és a./configure -ot a "make" futtatása előtt).

#!/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 változatabyzanz-record-window

(megjegyzés: MHC ): Szükségem volt a szkript módosítására egyszerű GUI párbeszédsel

p>
#!/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 }' <<< "$XWININFO")
read Y < <(awk -F: '/Absolute upper-left Y/{print }' <<< "$XWININFO")
read W < <(awk -F: '/Width/{print }' <<< "$XWININFO")
read H < <(awk -F: '/Height/{print }' <<< "$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"
    
válasz adott Rob W 14.10.2012 17:44
forrás
49

ffmpeg

Az egyik legmegfelelőbb eszköz affmpeg. A legtöbb videót egy screencast eszköz, például akazam, és a másik formátumba konvertálhatja.

Telepítse ezt a szoftverközpontból - automatikusan települ, ha a kiválóubuntu-restricted-extras csomagot telepíti.

Kazam képes kimenetet amp4 vagywebm formátumban. Általában jobb eredményeket kapsz amp4 formátumban.

Példa a GIF szintaxis készítésére

A videót gif-be konvertáló alapszintű szintaxis:

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

A konvertált GIF-k - különösen azok, amelyek normál 25/29 frame-per-másodpercenként nagyon nagyok lehetnek. Például - egy 800 képpontos webm 15 másodperces videó 25 képkocka / mp sebességgel képes 435Mb-re!

Ezt csökkentheti számos módszerrel:

framerate

Használja a-r [frame-per-second]

beállítást

példáulffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif

Méret csökkent 435Mb-tól 19Mb-ig

fájlméret-korlátozás

Használja a-fs [filesize]

beállítást

példáulffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif

Megjegyzés: ez egy közelítő kimeneti fájlméret, így a méret valamivel nagyobb lehet, mint a megadott.

a kimeneti videó mérete

Használja a-s [widthxheight]

beállítást

példáulffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif

Ez csökkentette a 1366x768 példányos videó méretét 26Mb értékig

hurok örökre

Néha előfordulhat, hogy a GIF örökre hurok.

Használja a-loop_output 0

beállítást

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

tovább optimalizálja és zsugorodik

ha aimagemagickconvert értéket 3% és 10% közötti fuzz tényezővel használja, akkor drámaian csökkentheti a képméretet

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

végre

egyesíti ezeket az opciókat, hogy csökkentse az Ubuntu kérdése kezelhetőségét.

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

majd

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

például

     

    
válasz adott fossfreedom 05.03.2012 22:46
forrás
33

Silentcast

A Silentcast egy másik nagyszerű gui alapú eszköz az animált .gif képek létrehozásához. Jellemzői:

  • 4 felvételi mód:

    1. Teljes képernyő

    2. Belső ablak

    3. Ablak díszítéssel

    4. Egyéni kiválasztás

  • 3 kimeneti formátum:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (keretek)

    5. .mkv

  • Nincs szükség telepítésre (hordozható)

  • Egyéni munkakönyvtár

  • Egyéni fps

Telepítés

Ha rendszeres telepítést szeretne, és az Ubuntu támogatott verzióját futtatja, a Silentcast segítségével telepítheti a PPA-t:

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

Ha nem támogatott Ubuntu verziót futtatsz (tényleg frissíteni kell!), akkor le kell töltened a legújabb verziót a GitHub oldalt és kézzel kielégíti a függőségeket (az yad és az ffmpeg fájlt a itt / a> és itt ), vagy ha valamivel újabb verziót futtat, például 13.10 próbálkozhat a közvetlenül .deb letöltésével .

Ha Gnome-ot használsz, akkor szeretnéd telepíteni a Topicons kiterjesztést , hogy megkönnyítsd a Silentcast megállítását.

Használat

Indítsa el a Silentcast-ot az asztali környezet gui-járól, vagy futtassa asilentcast parancsot egy terminálban. Válassza ki a beállításokat, és kövesse a képernyőn megjelenő utasításokat. Ha befejezte a felvételt, megjelenik egy párbeszédpanel a végső kimenet optimalizálásához, egy bizonyos számú képkocka eltávolításával.

További mélyreható használati irányelvekhez tekintse meg a README-ot, vagy a online GitHub verziót vagy a helyi verziót, amely a% cd_kde% -ban a zless vagy kedvenc szerkesztőjében van tárolva.

Megjegyzés:

A Silentcast még mindig a fejlesztési szakaszban van, és bár meglehetősen stabil, esetleg hibákat tapasztalhat. Ha igen, kérjük, jelentse azokat a projekt GitHub problémáinak követéséről . Ha problémái vannak a telepítésből a PPA-ból, és az Ubuntu támogatott verzióját futtatják, hagyj egy megjegyzést, vagy fordulj a karbantartóhoz (én) Launchpad.

    
válasz adott Seth 29.10.2014 02:27
forrás
7

Itt mindenféle bonyolult és jól működő (feltehetően) módszerek léteznek. Azonban soha nem is akartam ezt a folyamatot előtte és utána sem. Szóval, egyszerűen egy olyan online átalakítót használok, amely megfelel nekem a szükségleteimnek. Ezt a webhelyet használtam:

link

Ez nem az én weblapom, és semmilyen módon nem vagyok kapcsolatban velük. Ők csak az én könyvjelzőimben és még sok más.

    
válasz adott KGIII 17.10.2015 19:45
forrás
7

A record-gif.sh létrehozását létrehoztam, a Rob Wbyzanz-record-region :

  

A byzanz nevű sánkspecifikus felhasználói felület javította a felhasználói élményt ( egérrel kiválasztható terület , rekord előrehaladási sáv, visszajátszható felvétel ).

  • állítsa be a következőket:duration;
  • állítsa be asave_as destinationet;
  • válassza ki az egérrel a felvenni kívánt területet
  • készítsen szkriptet a felvétel visszajátszására (lásd:$HOME/record.again).

Telepítés

Telepítési szkriptet is létrehoztam

curl --location https://git.io/record-gif.sh | bash -
    
válasz adott Édouard Lopez 06.10.2016 22:27
forrás
3
  1. Telepítse a következő 3 csomagot:imagemagickmplayergtk-recordmydesktop
  2. Futtasson Asztali felvevőt , hogy rögzítse a screencast alkalmazásként használt képernyő / alkalmazás egy részét.
  3. Töltse le aogv2gif.sh -ot linkről
  4. Run:./ogv2gif.sh yourscreencast.ogv
  5. A GIF fájl ugyanabba a könyvtárba kerül

100% a maniat1k válaszából inspirált.

    
válasz adott Nicolas Raoul 30.06.2016 09:25
forrás
2

Ha szeretne még kedvelődni, használhatsz egy kifinomultabb módszert, mint az animált gifeket a HTMl5 vászonszerkesztés segítségével. Az x11-vászon-screencast projekt létrehoz egy html5 vászon animált képernyőfelvételt.

Lehet, hogy látta a híres példákat e technikáról a Sublime Text weboldalán. x11-canvas-screencast ezt a módszert egy lépéssel tovább növeli az egér kurzor követésének beépítésével. Íme egy demo arról, mi az x11- vászon-screencast termeli

Az eredmény jobb, mint egy animált gif, mivel ez nem korlátozódik a színek számára, és kevesebb sávszélességet igényel.

    
válasz adott gene_wood 22.09.2015 19:37
forrás
2

Ok, tehát az egérkattintások rögzítéséhez csak azkey-mon volt (a screenkey ):

Aztán:

  • Indítsa el akey-mon
  • A % co_kde % , hogy a képernyő-koordinátákat egyxrectsel parancsba helyezze
  • Futtassa abyzanz parancsot

... és így néz ki így:

Vegye figyelembe, hogy abyzanz az egérkattintáson körvonalat húz az egérmutató körül - ami inkább tetszik, de az Ubuntu 14.04.5 LTS-ben kissé megtört, mivel ez a kör nem jelenik meg és tűnik el elég gyorsan ahhoz, hogy jól illusztrálja a kattintásokat (pl. az egér nyomását és kiadásait).

    
válasz adott sdaau 24.08.2016 06:34
forrás
1

Nemrég hoztam létre az itt közzétett szkriptek kombinált verzióját Alapvetően ez lehetővé teszi a képernyő területének rögzítését, de egyszerű grafikus felületen.

Köszönjük, hogy a Rob W

Itt van a kód (vagy gist , ha tetszik):

#!/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"
    
válasz adott Jacajack 26.05.2016 22:17
forrás
1

Ha azt is szeretné, hogy az egérkattintások vagy a billentyűparancsok látható felvételei legyenek, akkor a képernyőgomb a legjobb esélyed: link

    
válasz adott nachtigall 12.06.2016 08:25
forrás
0

Agtk-recordmydesktop és affmpeg:

használata

apt-get install gtk-recordmydesktop ffmpeg

A RunMyDesktop futtatása rögzíti a képernyő / alkalmazás egy részét, amelyet screencastként használhat:

gtk-recordmydesktop

Hozzon létreogv2gif.sh -ot a következő tartalomsal:

INPUT_FILE=
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

Használja:

./ogv2gif.sh yourscreencast.ogv

Referenciák:

válasz adott Fedir RYKHTIK 14.02.2017 10:15
forrás
0

Az összes fent leírt módszert teszteljem, a legegyszerűbbnek találtam:

  1. használjon gtk-recordmydesktop és key-mon
  2. ffmpeg -i xx.ogv xx.gif < - paraméter nélkül .

az fps eredeti, és a gif méret kisebb, mint az ogv fájl.

    
válasz adott utopic eexpress 10.03.2017 11:11
forrás