Bir screencast'ın animasyonlu GIF görüntüleri nasıl oluşturulur?


476

Ekrandaki yayınların animasyonlu GIF görüntülerini (aşağıdaki gibi) görmüştüm, bu sitedeki yanıtları iyileştirmenin bir yolu olarak birkaç kez terfi ettim.

Hareketli GIF resmi

Bunları oluşturmak için hangi alet zinciri kullanılıyor? Bunu otomatik olarak yapan bir program var mı, yoksa insanlar senaryoları alıyor, bunları bir dizi statik kareye dönüştürüyor ve ardından GIF görüntüleri oluşturuyor mu?


6
LICEcap (http://www.cockos.com/licecap) aşağıdaki çözümlerden çok daha basittir, çünkü GUI tabanlıdır. Özgürlük ve fiyat gibi ücretsiz. Tek dezavantajı Wine aracılığıyla çalıştırmak zorunda olmasıdır.
Dennis,

4
İlgili: GIF screencasting; Unix ve Linux Stack Exchange'den UNIX yolu .
Cristian Ciupitu


2
Bu örnek ekran görüntüsü Windows'ta çekilmiş mi?
Clément

@ Clément Bu benim de fark ettiğim ilk şeydi :)
UniversallyUniqueID

Yanıtlar:


269

Dikizlemek

Ekranınızdan GIF'leri kolayca kaydetmenizi sağlayan yeni bir uygulamadır.

peek screencast demosu

Her neyse, GIF’lerin çok sınırlı bir renk paleti olduğunu unutmayın, bu yüzden bunları kullanmak pek de iyi bir fikir değil.

Ubuntu 18.10'dan beri Peek'i doğrudan kurabilirsiniz.

sudo apt install peek

Ubuntu eski sürümleri için, onun gelen Peek son sürümlerini yükleyebilirsiniz PPA .

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

GitHub deposunda daha fazla bilgi bulabilirsiniz .


2
Evet bu harika. sadece X11 ile çalışıyor ve GNOME 3'ü hedefliyor.
Ajith R Nair

2
@BeastWinterwolf ve ExillustX: burada hata raporları yayınlamayın, insanların onları görmeyi gerçekten önemsemediği sorun izleyiciyi kullanın! Burada bildir: github.com/phw/peek/issues
oligofren

2
Bu harika bir araçtır.
Mike,

1
@Jop V. Bir sicilin kaydını nasıl yaptınız?
milkovsky

1
@milkovsky Bunu kaydetmedim. Olduğu söyleniyor, sanırım sanal bir makine kullandılar ve bunu kaydettiler.
stommestack

272

Byzanz

GIF senaryolarını kaydetmek için şimdiye kadar bulduğum en iyi yazılım Byzanz.

Byzanz, doğrudan GIF'e kaydettiği için harikadır; dosyaların boyutu minimumda tutulurken kalite ve FPS etkileyicidir.

Kurulum

Byzanz artık evren deposunda mevcut:

sudo apt-get install byzanz

kullanım

Kurulduğunda bir terminalde çalıştırabilirsiniz.

Bu şimdi yaptığım küçük bir örnek

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

görüntü tanımını buraya girin


3
Teşekkürler, güzel araç! Renkler her zaman doğru değildir, ancak bu küçük bir ayrıntıdır. Aşağıdaki yanıtı verilen bir pencereyi (kullanıcı tarafından çalışma zamanında seçilen) yakalamaya yardımcı olan bir kabuk komut dosyası yazdım .
Rob W,

57
Byzanz'ın kullanıcı arayüzü yok! Kaydetmek istediğim alanın x, y, genişlik ve yüksekliğini tahmin etmem gerekir mi? 2014'te hala bunu yapmak zorunda kalmam biraz saçma.
Dan Dascalescu

5
@DanDascalescu Kimse kullanmanız gerektiğini söylemiyor ... Bir GUI'den çok bir terminal tercih ediyorum, yanlış olan ne?
Bruno Pereira

31
@DanDascalescu Tahmin etmeye gerek yok. xwininfoPencere özelliklerini almak için kullanabilirsiniz .
Marcus Møller

4
Süreyi önceden bilmek zorunda kalmamanın bir yolu var mı? Kayıt yaparken ne kadar zaman alacağını önceden bilmiyorum.
Nicolas Raoul

236

Önce bunu kurun:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

Bunlar gerekli şeyler, ImageMagick, MPlayer ve Desktop Recorder. Ardından ekran görüntüsü olarak kullanmak üzere ekranın / uygulamanın bir bölümünü yakalamak için Masaüstü Kaydediciyi kullanın. Masaüstü Kaydedici, kaydı bir OGV videoya kaydettikten sonra , MPlayer , JPEG ekran görüntülerini yakalamak ve onları 'çıkış' dizinine kaydetmek için kullanılır.

Bir terminalde:

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

Ekran görüntülerini animasyonlu giflere dönüştürmek için ImageMagick'i kullanın .

convert output/* output.gif

ekran görüntülerini şu şekilde optimize edebilirsiniz:

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

35
gif 'i optimize etmenin bir başka yolu gifsicle kullanmaktır: gifsicle -O in.gif -o out.gifSadece dosya boyutunda 100x küçültme denedim.
Yrogirg

10
Merak edenler için, @Yrogirg komutundaki ilk bayrak, "0" rakamı değil, büyük bir "O"
harfidir.

2
Vay canına, gifsicle benimkileri daha hızlı yaptı ama daha küçük değildi ve convert optimize komutu onu çirkin hale getirdi.
MalcolmOcean

6
Son iki birleştirerek tavsiye convertbirine adımları: convert output/* -layers Optimize output.gif. Benim için, bu işlem hızlandı ve çıktı dosyasını daha küçük hale getirdi. Bu adımları ayrı ayrı yapmak için hiçbir sebep görmüyorum. (Ben -fuzz 10%tartışmayı denemedim .)
thejoshwolfe

1
@MalcolmOcean gibi, convertifade de çirkinliğin ötesine geçti. Belgelere göre ( imagemagick.org/script/command-line-options.php#layers ), optimizeuygulama zaman içinde değişebilir. Fakat bayrağa göre hafifçe ince bir convertifade, -coalesceişleri iyileştirdi, ancak yine de kabul edilebilir olduğu yere değil. Bu -layers optimize-transparencyayarı en iyi sonuç için kullanmak zorunda kaldım :convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif

136

genel bakış

Bu cevap üç kabuk komut dosyası içerir:

  1. byzanz-record-window - Kayıt için bir pencere seçmek için.
  2. byzanz-record-region - Kayıt için ekranın bir bölümünü seçmek için.
  3. MHC tarafından 1 için basit bir GUI ön uç .

Giriş

Beni tanıştırdığınbyzanz için teşekkürler Bruno Pereira ! GIF animasyonları oluşturmak için oldukça kullanışlıdır. Bazı durumlarda renkler kapalı olabilir, ancak dosya boyutu bunu telafi eder. Örnek: 40 saniye, 3,7 Mb .

kullanım

Aşağıdaki iki komut dosyasının birini / hepsini içinde bulunan bir klasöre kaydedin $PATH. İşte belirli bir pencerenin ekran görüntüsünü oluşturmak için ilk komut dosyasını kullanmaya bir örnek.

  1. Çalıştırmak byzanz-record-window 30 -c output.gif
  2. Yakalamak istediğiniz pencereye (alt-sekme) gidin. Üstüne tıkla.
  3. $DELAYKayıt için hazırladığınız 10 saniye (kodlanmış ) bekleyin .
  4. Bip sesinden sonra ( beepfonksiyonda tanımlanmıştır ), byzanzbaşlayacaktır.
  5. 30 saniye sonra ( 301. adımdaki anlam budur ), byzanzbiter. Bir bip sesi tekrar yayınlanacaktır.

Ben dahil -cbayrağı byzanz-record-windowbenim kabuk komut dosyası için herhangi bir argüman eklenen olduğunu göstermek için byzanz-recordkendisi. -cBayrak söyler byzanzayrıca screencast imleci dahil etmek.
Daha fazla bilgi için man byzanz-recordveya byzanz-record --helpbakınız.

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

Bağımlılık: xrectseldan xrectsel . Depoyu klonlayın ve çalıştırılabilir makeduruma getirmek için çalıştırın. (Bu protesto ederse hiçbir makefile, çalıştırmak var ./bootstrapve ./configure`markasını çalıştırmadan önce).

#!/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 versiyonu byzanz-record-window

( MHC tarafından yapılan yorum ): Basit bir GUI iletişim kutusu ile komut dosyasını değiştirme özgürlüğünü kullandım

#!/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
Bu senaryolar github gibi bir yerde mi tutuluyor? Çok faydalılar, StackOverflow cevabındaki metinden daha iyi bir yerde tutulursa güzel olurdu.
KFro,

1
@KFro Bu, SO değil Ubuntu'ya sor;) Hayır, onları bir git havuzuna koymadım, çünkü betikler kendileri kötü belgeleniyor (kullanıcılar için). Ekteki belgeler cevaba dahil edilmiştir, bu yüzden dosyaları ve belgeleri Git deposunda bölmenin bir yararı göremiyorum.
Rob W

1
Düzenleme için daha fazla kredi yok, ancak yapıldı ;-).
Rmano

2
Sadece bunun için büyük bir teşekkür etmek istedim - harika cevap ve bana çok yardımcı oldu. İşte benim neyle sonuçlandığım. notify-sendSesimin kapalı olması durumunda da kullanmayı seviyorum .
Daniel Buckmaster

2
@Masi Byzanz - ve bu senaryolar - 16.04'te benim için gayet iyi çalışıyor
Jeff Puckett

51

ffmpeg Ffmpeg'i kurun

Kullandığım en iyi araçlardan biri ffmpeg. Videoyu çoğu gibi bir screencast aracından alabilir kazamve başka bir formata dönüştürebilir.

Bunu yazılım merkezinden yükleyin - mükemmel ubuntu-restricted-extraspaketi yüklerseniz otomatik olarak yüklenir .

Kazam video formatlarında çıkış yapabilir mp4veya webm. Genellikle, mp4formatta çıkan daha iyi sonuçlar elde edersiniz .

örnek GIF sözdizimi yapma

Videoyu gif'e çeviren temel sözdizimi:

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

Dönüştürülen GIF'ler - özellikle saniyede standart 25/29 kare alanlara sahip olanlar çok büyük olabilir. Örneğin - bir 800Kb webm 25fps'de 15 saniyelik bir video 435Mb'ye çıkabiliyor!

Bunu birkaç yöntemle azaltabilirsiniz:

kare hızı

Seçeneğini kullanın -r [frame-per-second]

Örneğin ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif

Boyut 435Mb'den 19Mb'ye düşürüldü

dosya boyutu sınırı

Seçeneğini kullanın -fs [filesize]

Örneğin ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif

Not - bu yaklaşık bir çıktı dosyası boyutudur, böylece boyut belirtilenden biraz daha büyük olabilir.

çıkış videosunun boyutu

Seçeneğini kullanın -s [widthxheight]

Örneğin ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif

Bu, örneğin 1366x768 video boyutunu 26 MB'a düşürdü

sonsuza kadar döngü

Bazen GIF'in sonsuza dek döngüde kalmasını isteyebilirsiniz.

Seçeneğini kullanın -loop_output 0

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

daha da optimize et ve küçült

imagemagick convert% 3 ile% 10 arasında bir efekt faktörü kullanıyorsanız , görüntü boyutunu önemli ölçüde azaltabilirsiniz.

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

en sonunda

Ask Ubuntu için yönetilebilir bir şey azaltmak için bu seçeneklerin bazılarını birleştirin.

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

bunu takiben

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

örnek

görüntü tanımını buraya girin


Eğer Docker varsa ve video ise demo.mkvbu komutları çalıştırabilirsiniz: 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
Bana göre böyle bir seçenek olmadığını şikayet ediyor -loop_output...

1
+1 En iyi cevap. Ama bir q hala ubuntu-restricted-extrasmükemmel olduğunu düşünüyor musun ??
Severus Tux

1
@ ParanoidPanda artık seçenek -loop. Öyleyse olur -loop 0. İşte Ubuntu 16.04.01'de çalışan bir komut ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif. +500,500100x100 dikdörtgeni başlatmak için X, Y konumudur. xgrabekranı girdi olarak alır.
Sanbor,

34

Silentcast

Silentcast, animasyonlu .gif görüntüler oluşturmak için harika bir GUI tabanlı araçtır. Özellikleri şunlardır:

  • 4 kayıt modu:

    1. Tüm ekran

    2. Pencerenin içinde

    3. Dekorasyonu olan pencere

    4. Özel seçim

  • 3 çıkış formatı:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (Kareler)

    5. .mkv

  • Kurulum gerektirmez (taşınabilir)

  • Özel çalışma dizini

  • Özel fps

Kurulum

Düzenli bir kurulum istiyorsanız ve desteklenen bir Ubuntu sürümü kullanıyorsanız Silentcast'i PPA ile kurabilirsiniz:

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

Desteklenen bir Ubuntu sürümü çalıştırmıyorsanız (gerçekten yükseltmelisiniz!) En son sürümü GitHub sayfasından indirmeniz ve bağımlılıkları manuel olarak sağlamanız gerekir ( sırasıyla yad ve ffmpeg dosyalarını buradan ve buradan temin edebilirsiniz ) veya 13.10 gibi biraz daha yeni bir sürüm kullanıyorsanız , .deb dosyasını doğrudan indirmeyi deneyebilirsiniz .

Gnome kullanıyorsanız, Silentcast'i durdurmayı kolaylaştırmak için Topicons uzantısını yüklemek isteyebilirsiniz .

kullanım

Silentcast'i masaüstü ortamınızın GUI'sinden başlatın veya silentcastkomutu bir terminalde çalıştırın . Ayarlarınızı seçin ve ekrandaki talimatları izleyin. Kaydı tamamladığınızda, belirli sayıda kareyi kaldırarak son çıktıyı optimize etmek için bir iletişim kutusu sunulur.

Daha detaylı kullanım için README'ye , çevrimiçi GitHub sürümüne veya /usr/share/doc/silentcastzless ile birlikte saklanan yerel sürümüne veya favori düzenleyicinize bakın.

Örnek

Notlar:

Silentcast hala geliştirme aşamasında ve oldukça kararlı olmasına rağmen bazı hatalarla karşılaşabilirsiniz. Bunu yaparsanız lütfen bunları projenin GitHub sorunları izleyicisine bildirin . PPA'dan kurulum yapmakta zorlanıyorsanız ve Ubuntu'nun desteklenen bir sürümünü kullanıyorsanız, bir yorum yazınız veya Launchpad'deki bakıcıya (ben) başvurun .



@FranciscoCorralesMorales Komut satırından çalıştırabilir ve sonra deneyebilir misiniz? Bir kez çöktüğünde çıktıyı alıp paste.ubuntu.com adresine yükleyin ve buraya tekrar bağlayın , böylece bir göz atabilirim. Teşekkürler!
Seth

1
Bunun harika çalıştığını onaylayabilirim! Bu cevapta görüntülendiği gibi açık pencerelerin dışında büyük çözünürlüğe sahip çok küçük bir (650 KB) .gif dosyası oluşturur: askubuntu.com/questions/882419/… posteri ekleyebilirsiniz @Seth harika bir adam ve bana AU'da yardımcı oldu genel sohbet odası kurdu :)
WinEunuuchs2Unix

Proje terk edildi mi? İki yıl boyunca depoya herhangi bir taahhütte bulunulmamıştır.
Akı

ne yazık ki, sağlık sorunları ve uni arasında evet, evet. Depo şu anda terk edilmiş durumda. Ancak GitHub’daki proje oradaki en son kodu alabilir.
Seth

8

Burada listelenen her türlü karmaşık ve iyi işleyen (muhtemelen) yolları var. Ancak, bu süreçten önce ve o zamandan geçmek istemedim. Bu yüzden, basitçe ihtiyacım olan birkaç kez ihtiyacımı karşılayan çevrimiçi bir dönüştürücü kullanıyorum. Bu siteyi kullandım:

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

Bu benim sitem değil ve hiçbir şekilde onlara bağlı değilim. Yer işaretlerimdeki tek kişi onlar ve daha fazlası var.


Bunu severim. Halihazırda youtube için masaüstümü kayıt etmek için basit ekran kaydediciyi kullanıyorum, bu yüzden mkv'yi bir gif'e dönüştürmek kolaydı.
isaaclw

8

Rob W'ninrecord-gif.sh geliştirilmiş bir versiyonunu yarattım :byzanz-record-region

Kullanıcı topal bir GUI byzanz, kullanıcı deneyimini geliştirdi ( fare ile seçilebilir alan , kayıt ilerleme çubuğu, tekrar oynatılabilir kayıt ).

kabuğu ile masaüstü kayıt

  • kayıt ayarla duration;
  • set save_ashedef;
  • - fareyle - kaydedilecek alanı seçin ;
  • kaydı tekrarlamak için bir komut dosyası oluşturun (bkz. $HOME/record.again).

Yüklemek

Ayrıca bir kurulum betiği oluşturdum

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

1
sudo apt install autoconf byzanzBu betiği çalıştırmadan önce yapmanız gerekir . o ubuntu varsayılan olarak yüklü değil
Crantisz

@Crantisz teşekkürler, yüklemek için komut dosyasını güncelledik autoconfve byzanz. Deneyebilir misin?
Édouard Lopez

Az önce başka bir bilgisayarda test ettim. Yeni kurulan ubuntu sistemimde git yok. Ve nedenini bilmiyorum, ancak senaryo ikinci apt-get Y / N sorusundan hemen sonra duruyor. Tüm bağımlılıkları tek bir komutta toplayabilir misiniz?
Crantisz

@Crantisz komut bir yükleyici betiğidir, eğer sadece record-gif.sh dosyasını istiyorsanız depodan alabilirsiniz
Édouard Lopez


3

Eğer meraklısı olmak istiyorsanız, HTMl5 tuval ekranlama özelliğini kullanarak animasyonlu giflerden daha karmaşık bir yöntem kullanabilirsiniz. X11-kanvas-screencast projesi html5 tuval animasyonlu ekran yakalama yaratacaktır.

Sublime Text web sitesinde bu teknolojinin bazı ünlü örneklerini görmüş olabilirsiniz . x11-canvas-screencastBu imleci, fare imlecinin izlenmesini içeren bir adım daha ileri götürür. İşte x11-canvas-screencast'ın ne ürettiğine dair bir demo

Sonuç, sahip olduğu renk sayısıyla sınırlı olmadığından ve daha az bant genişliği gerektirdiğinden, animasyonlu bir gif'den daha iyidir.


1
Bu çok hoş ve hepsi ama bunu kolayca paylaşamazsınız, örneğin Slack, Twitter vb.
Elijah Lynn

@ElijahLynn çok doğru. Bu çözüm, yüksek kare hızı, düşük bant genişliği ve tam renk derinliği için optimize edilmiştir. Javascript gerektirdiğinden taşınabilir değildir (örneğin, bir tweet'e gömmek için).
gene_wood

3

Tamam, fare tıklamaları yakalamak için bulduğum tek şey key-mon(README aracılığıyla screenkey) idi:

Sonra ben:

  • Başlat key-mon
  • Kullan xrectselekran almak için bir konulmuştur koordinatları byzanzkomutu
  • byzanzKomutu çalıştırın

... ve şöyle gözüküyor:

out.gif

Not key-mon --visible_clickfare tıklaması üzerine fare işaretçisi etrafında bir daire çizin olur - (ı tercih ediyorum, ama bu daire görünür ve tıklamaları doğru göstermek amacıyla yeterince hızlı geçmezse olarak Ubuntu 14.04.5 LTS bu biraz bozuldu yani fare basar ve bültenleri).


2

Geçenlerde zaten burada yayınlanan komut dosyalarının birleşik sürümünü oluşturdum.
Temel olarak, ekran bölgesini kaydetmenizi sağlar, ancak basit GUI ile.

Rob W için bu harika scriptleri sağladığı için teşekkürler

İşte kod (veya isterseniz öz ):

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

Ayrıca, fare tıklamaları veya tuş vuruşlarının görünür kayıtlarını istiyorsanız, screenkey en iyi seçeneğinizdir: https://github.com/wavexx/screenkey


2
screenkeyFare tıklamaları ile nasıl başa çıkacağımı anlamıyorum (sadece klavye gösterimi için görünüyor), ancak README key-monbunun için yapabileceklerini ifade ediyor, aşağıdaki cevabımı görün .
sdaau

1

Kullanın gtk-recordmydesktopve ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

RecordMyDesktop komutunu çalıştırın, ekran görüntüsü / ekran olarak kullanmak için ekranın / uygulamanın bir bölümünü yakalayın:

gtk-recordmydesktop

ogv2gif.shAşağıdaki içerikle oluşturun :

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

Kullanın:

./ogv2gif.sh yourscreencast.ogv

Referanslar :


1

Yukarıdaki yöntemlerin hepsini test ettim, en basit olanı buldu:

  1. Bir ogv almak için gtk-recordmydesktop ve key-mon tuşlarını kullanın.
  2. ffmpeg -i xx.ogv xx.gif <- herhangi bir parametre olmadan .

fps orijinaldir ve gif boyutu ogv dosyasından küçüktür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.