Bagaimana cara membuat gambar GIF animasi screencast?

476

Saya telah melihat gambar animasi GIF dari screen cast (seperti yang di bawah ini) dipromosikan beberapa kali di situs ini sebagai cara untuk meningkatkan jawaban.

Gambar GIF animasi

Toolchain apa yang digunakan untuk membuat ini? Apakah ada program yang melakukan ini secara otomatis, atau apakah orang mengambil screencast, mengubahnya menjadi serangkaian bingkai statis, dan kemudian membuat gambar GIF?

andrewsomething
sumber
6
LICEcap (http://www.cockos.com/licecap) jauh lebih sederhana daripada solusi di bawah ini, karena berbasis GUI. Gratis seperti kebebasan dan harga. Satu-satunya downside adalah bahwa Anda harus menjalankannya melalui Wine.
Dennis
4
Terkait: screencasting GIF; cara UNIX dari Unix & Linux Stack Exchange.
Cristian Ciupitu
2
Apakah contoh tangkapan layar ini diambil di Windows?
Clément
@ Clément Itu adalah hal pertama yang saya perhatikan juga :)
UniversallyUniqueID

Jawaban:

269

Mengintip

Adalah aplikasi baru yang memungkinkan Anda merekam GIF dengan mudah dari layar Anda.

intip demo screencast

Bagaimanapun, perlu diingat bahwa GIF's memiliki palet warna yang sangat terbatas sehingga bukan ide yang baik untuk menggunakannya.

Sejak Ubuntu 18.10 Anda dapat menginstal Peek secara langsung.

sudo apt install peek

Untuk versi Ubuntu yang lebih lama, Anda dapat menginstal Peek versi terbaru dari PPA -nya .

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

Temukan informasi lebih lanjut di repo GitHub .

Stommestack
sumber
2
Ya, ini bagus. ini hanya bekerja dengan X11 dan ditargetkan pada GNOME 3.
Ajith R Nair
2
@BeastWinterwolf dan ExillustX: jangan memposting laporan bug di sini, gunakan pelacak masalah di mana orang-orang benar-benar peduli melihatnya! Laporkan di sini: github.com/phw/peek/issues
oligofren
2
Ini adalah alat yang hebat.
Mike
1
@Op V. bagaimana Anda membuat catatan?
milkovsky
1
@ Milkovsky saya tidak merekam ini. Yang telah dikatakan, saya pikir mereka menggunakan mesin virtual dan merekamnya.
stommestack
272

Byzanz

Perangkat lunak terbaik yang saya temukan untuk merekam screencasts GIF adalah Byzanz.

Byzanz sangat bagus karena merekam langsung ke GIF, kualitas dan FPS sangat mengesankan dengan tetap menjaga ukuran file menjadi minimal.

Instalasi

Byzanz sekarang tersedia dari repositori semesta:

sudo apt-get install byzanz

Pemakaian

Ketika diinstal, Anda dapat menjalankannya di terminal.

Ini adalah contoh kecil yang saya lakukan tadi

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

masukkan deskripsi gambar di sini

Bruno Pereira
sumber
3
Terima kasih, alat yang bagus! Warnanya tidak selalu akurat, tapi itu detail kecil. Saya telah menulis skrip shell yang membantu menangkap jendela (dipilih saat runtime oleh pengguna), diposting dalam jawaban di bawah ini .
Rob W
57
Byzanz tidak memiliki UI apa pun! Apakah saya harus menebak x, y, lebar dan tinggi area yang ingin saya rekam? Agak konyol bahwa pada 2014 saya masih harus melakukan ini.
Dan Dascalescu
5
@DanDascalescu Tidak ada yang mengatakan Anda perlu menggunakannya ... Saya lebih suka terminal daripada GUI, apa yang salah dengan itu?
Bruno Pereira
31
@DanDascalescu Tidak perlu menebak. Anda dapat menggunakan xwininfountuk mendapatkan properti jendela.
Marcus Møller
4
Adakah cara untuk menghindari keharusan mengetahui durasi sebelumnya? Saat merekam, saya tidak pernah tahu sebelumnya berapa banyak waktu yang dibutuhkan.
Nicolas Raoul
236

Pertama instal ini:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

itu adalah hal-hal yang diperlukan, ImageMagick, MPlayer dan Desktop Recorder. Kemudian gunakan Desktop Recorder untuk mengambil sebagian layar / aplikasi yang akan digunakan sebagai screencast. Setelah Perekam Desktop menyimpan rekaman ke dalam video OGV , MPlayer akan digunakan untuk mengambil screenshot JPEG, menyimpannya ke direktori 'output'.

Di terminal:

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

Gunakan ImageMagick untuk mengonversi tangkapan layar menjadi gif animasi.

convert output/* output.gif

Anda dapat mengoptimalkan tangkapan layar dengan cara ini:

convert output.gif -fuzz 10% -layers Optimize optimised.gif
maniat1k
sumber
35
cara lain untuk mengoptimalkan gif adalah dengan menggunakan gifsicle: gifsicle -O in.gif -o out.gifSaya baru saja mencoba dan mendapatkan pengurangan ukuran file 100x.
Yrogirg
10
Bagi mereka yang bertanya-tanya, bendera pertama dalam perintah @Yrogirg adalah huruf kapital "O", bukan angka "0" :)
brandizzi
2
Wow, gifsicle membuat milik saya lebih cepat tetapi tidak lebih kecil, dan perintah optimisasi konversi membuatnya sangat jelek.
MalcolmOcean
6
Saya sarankan menggabungkan dua terakhir convertlangkah menjadi satu: convert output/* -layers Optimize output.gif. Bagi saya, ini mempercepat waktu pemrosesan serta membuat file output lebih kecil. Saya tidak melihat alasan untuk melakukan langkah-langkah itu secara terpisah. (Saya tidak mencoba -fuzz 10%argumennya.)
thejoshwolfe
1
Seperti @MalcolmOcean, convertpernyataan itu membuatnya sangat mengerikan. Menurut dokumen ( imagemagick.org/script/command-line-options.php#layers ), optimizeimplementasinya dapat berubah seiring waktu. Tapi convertpernyataan yang sedikit berubah dengan -coalescebendera memperbaiki keadaan, tetapi masih belum sampai ke tempat itu dapat diterima. Saya akhirnya harus menggunakan -layers optimize-transparencypengaturan untuk hasil terbaik:convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif
136

Gambaran

Jawaban ini mengandung tiga skrip shell:

  1. byzanz-record-window - Untuk memilih jendela untuk merekam.
  2. byzanz-record-region - Untuk memilih bagian layar untuk perekaman.
  3. Front-end GUI sederhana untuk 1, oleh MHC .

pengantar

Terima kasih Bruno Pereira karena telah memperkenalkan saya kepadabyzanz ! Ini cukup berguna untuk membuat animasi GIF. Dalam beberapa kasus, warnanya mungkin tidak aktif, tetapi ukuran file menebusnya. Contoh: 40 detik, 3,7Mb .

Pemakaian

Simpan satu / semua dari dua skrip berikut di dalam folder Anda $PATH. Berikut ini contoh menggunakan skrip pertama untuk membuat screencast dari jendela tertentu.

  1. Lari byzanz-record-window 30 -c output.gif
  2. Buka jendela (alt-tab) yang ingin Anda tangkap. Klik itu.
  3. Tunggu 10 detik (dalam bentuk hard-code $DELAY), di mana Anda bersiap untuk merekam.
  4. Setelah bunyi bip (ditentukan dalam beepfungsi), byzanzakan dimulai.
  5. Setelah 30 detik (itulah arti dari 30langkah 1), byzanzberakhir. Bunyi bip akan disiarkan lagi.

Saya menyertakan -cflag byzanz-record-windowuntuk menggambarkan bahwa argumen apa pun pada skrip shell saya ditambahkan ke byzanz-recorddirinya sendiri. The -cflag mengatakan byzanzjuga termasuk kursor di screencast.
Lihat man byzanz-recordatau byzanz-record --helpuntuk lebih jelasnya.

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

Ketergantungan: xrectseldari xrectsel . Klon repositori dan jalankan makeuntuk mendapatkan executable. (Jika protes tidak ada makefile, jalankan ./bootstrapdan ./configuresebelum menjalankan `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

Versi Gui byzanz-record-window

(komentar oleh MHC ): Saya telah mengambil kebebasan untuk memodifikasi skrip dengan dialog GUI sederhana

#!/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
sumber
17
Apakah skrip ini disimpan di suatu tempat seperti github? Mereka sangat berguna, alangkah baiknya jika mereka disimpan di suatu tempat lebih baik daripada teks dalam jawaban StackOverflow.
KFro
1
@KFro Ini Tanya Ubuntu, bukan SO;) Tidak, saya belum menempatkannya di repositori git, karena skrip itu sendiri tidak didokumentasikan dengan baik (untuk pengguna). Dokumentasi yang menyertainya disertakan dengan jawabannya, jadi saya tidak melihat manfaat memisahkan file dan dokumentasi dalam repositori Git.
Rob W
1
Tidak ada lagi kredit untuk mengedit, tetapi dilakukan ;-).
Rmano
2
Hanya ingin mengucapkan terima kasih yang luar biasa untuk ini - jawaban yang luar biasa dan banyak membantu saya. Inilah yang akhirnya saya dapatkan. Saya suka menggunakan notify-sendjuga jika suara saya tidak aktif.
Daniel Buckmaster
2
@Masi Byzanz - dan skrip ini - bekerja dengan baik untuk saya di 16.04
Jeff Puckett
51

ffmpeg Instal ffmpeg

Salah satu alat terbaik yang saya gunakan adalah ffmpeg. Itu dapat mengambil sebagian besar video dari alat screencast seperti kazamdan mengubahnya ke format lain.

Instal ini dari pusat perangkat lunak - ini secara otomatis diinstal jika Anda menginstal ubuntu-restricted-extraspaket yang sangat baik .

Kazam dapat menampilkan dalam format video mp4atau webm. Umumnya Anda mendapatkan hasil yang lebih baik dalam mp4format.

contoh GIF membuat sintaks

Sintaks dasar untuk mengonversi video ke gif adalah:

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

GIF yang dikonversi - terutama yang dengan bingkai 25/29 standar per detik bisa sangat besar. Misalnya - video webk 15-detik 800Kb pada 25fps dapat menghasilkan hingga 435Mb!

Anda dapat mengurangi ini dengan sejumlah metode:

framerate

Gunakan opsi -r [frame-per-second]

sebagai contoh ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif

Ukuran berkurang dari 435Mb menjadi 19Mb

batas ukuran file

Gunakan opsi -fs [filesize]

sebagai contoh ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif

Catatan - ini adalah perkiraan ukuran file output sehingga ukurannya bisa sedikit lebih besar dari yang ditentukan.

ukuran video output

Gunakan opsi -s [widthxheight]

sebagai contoh ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif

Ini mengurangi ukuran video contoh 1366x768 ke 26Mb

lingkaran selamanya

Terkadang Anda mungkin ingin GIF berulang selamanya.

Gunakan opsi -loop_output 0

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

lebih lanjut mengoptimalkan dan menyusut

jika Anda menggunakan imagemagick convertdengan faktor fuzz antara 3% dan 10% maka Anda dapat secara dramatis mengurangi ukuran gambar

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

akhirnya

menggabungkan beberapa opsi ini untuk mengurangi menjadi sesuatu yang dapat dikelola untuk Tanya Ubuntu.

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

diikuti oleh

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

contoh

masukkan deskripsi gambar di sini

kebebasan fosil
sumber
Jika Anda memiliki Docker dan video Anda demo.mkvAnda dapat menjalankan perintah ini: 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
Bagi saya itu mengeluh bahwa tidak ada opsi seperti -loop_output...
1
+1 Jawaban terbaik. Tapi satu q menurut Anda masih ubuntu-restricted-extrasbagus ??
Severus Tux
1
@ParanoidPanda sekarang pilihannya adalah -loop. Jadi itu akan terjadi -loop 0. Ini adalah perintah yang berfungsi di Ubuntu 16.04.01 ffmpeg -f x11grab -r 25 -s 100x100 -i :0.0+500,500 -pix_fmt rgb24 -loop 0 out2.gif. +500,500adalah posisi X, Y untuk memulai persegi panjang 100x100. xgrabmengambil layar sebagai input.
sanbor
34

Siar silang

Silentcast adalah alat berbasis gui lain yang bagus untuk membuat gambar animasi .gif. Fitur-fiturnya meliputi:

  • 4 mode perekaman:

    1. Seluruh layar

    2. Di dalam jendela

    3. Jendela dengan dekorasi

    4. Pilihan khusus

  • 3 format output:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (bingkai)

    5. .mkv

  • Tidak perlu instalasi (portabel)

  • Direktori kerja khusus

  • Fps khusus

Instalasi

Jika Anda ingin instalasi reguler dan menjalankan versi Ubuntu yang didukung, Anda dapat menginstal Silentcast oleh PPA:

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

Jika Anda tidak menjalankan versi Ubuntu yang didukung (Anda harus benar-benar memutakhirkan!), Anda harus mengunduh versi terbaru dari halaman GitHub dan secara manual memenuhi dependensinya (Anda dapat membeli yad dan ffmpeg dari sini dan di sini masing-masing) atau, jika Anda menjalankan versi yang sedikit lebih baru seperti 13.10 Anda dapat mencoba mengunduh deb secara langsung .

Jika Anda menggunakan Gnome, Anda mungkin ingin menginstal ekstensi Topicons untuk membuat menghentikan Silentcast lebih mudah.

Pemakaian

Mulai Silentcast dari gui lingkungan desktop Anda atau jalankan silentcastperintah di terminal. Pilih pengaturan Anda dan ikuti petunjuk di layar. Setelah selesai merekam, Anda akan disajikan dialog untuk mengoptimalkan hasil akhir dengan menghapus sejumlah bingkai.

Untuk panduan penggunaan lebih mendalam, lihat README, baik versi GitHub online atau versi lokal yang disimpan /usr/share/doc/silentcastdengan zless atau editor favorit Anda.

Contoh

Catatan:

Silentcast masih dalam tahap pengembangan dan meskipun cukup stabil Anda mungkin menemukan beberapa bug. Jika Anda melakukannya, silakan laporkan pada pelacak masalah GitHub proyek . Jika Anda kesulitan menginstal dari PPA dan menjalankan versi Ubuntu yang didukung tinggalkan komentar di bawah ini atau hubungi pengelola (saya) di Launchpad.

Seth
sumber
segera setelah saya menekan 'Stop' itu crash ...
Francisco Corrales Morales
@FranciscoCorralesMorales Bisakah Anda menjalankannya dari command-line dan kemudian coba? Setelah macet ambil output dan unggah ke paste.ubuntu.com dan tautkan kembali ke sini sehingga saya bisa melihatnya. Terima kasih!
Seth
1
Saya dapat mengkonfirmasi ini bekerja dengan baik! Ini menciptakan file .gif yang sangat kecil (650 KB) dengan resolusi luar jendela terbuka seperti yang ditampilkan dalam jawaban ini: askubuntu.com/questions/882419/... Saya mungkin menambahkan poster @Seth adalah pria hebat dan membantu saya di AU mengatur ruang obrolan umum :)
WinEunuuchs2Unix
Apakah proyek itu ditinggalkan? Sudah hampir dua tahun tidak ada komitmen ke repositori.
Fluks
@flux sayangnya, antara masalah kesehatan dan uni, ya. Repositori saat ini ditinggalkan. Namun, proyek di GitHub tidak dan Anda bisa mendapatkan kode terbaru di sana.
Seth
8

Ada segala macam cara yang rumit dan bekerja dengan baik (mungkin) untuk melakukan hal ini tercantum di sini. Namun, saya tidak pernah ingin melalui proses itu sebelum atau sejak itu. Jadi, saya cukup menggunakan konverter online yang sesuai dengan kebutuhan saya beberapa kali saya perlu melakukannya. Saya telah menggunakan situs ini:

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

Ini bukan situs saya dan saya tidak berafiliasi dengan mereka. Hanya ada satu di bookmark saya dan ada banyak lagi.

KGIII
sumber
Saya suka ini. Saya sudah menggunakan simplescreenrecorder untuk merekam desktop saya untuk youtube pada kesempatan, jadi mengubah mkv menjadi gif itu mudah dengan ini.
isaaclw
8

Saya buat record-gif.sh, versi perbaikan dari Rob Wbyzanz-record-region :

GUI lumpuh untuk byzanz, meningkatkan pengalaman pengguna ( area yang dapat dipilih mouse , merekam progress bar, rekaman yang dapat diputar ulang ).

rekam desktop dengan shell

  • mengatur rekaman duration;
  • menetapkan save_astujuan;
  • pilih –dengan mouse– area yang akan direkam;
  • buat skrip untuk memutar ulang rekaman (lih $HOME/record.again.).

Pasang

Saya juga membuat skrip instalasi

curl --location https://git.io/record-gif.sh | bash -
Édouard Lopez
sumber
1
Yang perlu Anda lakukan sudo apt install autoconf byzanzsebelum menjalankan skrip ini. itu tidak diinstal secara default di ubuntu
Crantisz
@Crantisz terima kasih, saya memperbarui skrip instalasi untuk menginstal autoconfdan byzanz. Bisakah kamu mencobanya?
Édouard Lopez
Saya baru saja mengujinya di PC lain. Tidak ada git di sistem ubuntu saya yang baru diinstal. Dan saya tidak tahu mengapa, tapi skrip berhenti setelah pertanyaan apt-get Y / N kedua. Bisakah Anda mengemas semua dependensi dalam satu perintah?
Crantisz
@Crantisz perintahnya adalah skrip penginstal, jika Anda hanya menginginkan record-gif.sh, Anda bisa mendapatkannya dari repo
Édouard Lopez
4
  1. Instal 3 paket ini: imagemagick mplayer gtk-recordmydesktop
  2. Jalankan Desktop Recorder untuk mengambil sebagian layar / aplikasi yang akan digunakan sebagai screencast
  3. Unduh ogv2gif.shdari https://github.com/nicolas-raoul/ogv2gif
  4. Lari: ./ogv2gif.sh yourscreencast.ogv
  5. File GIF akan diletakkan di direktori yang sama

100% terinspirasi dari jawaban maniat1k .

Nicolas Raoul
sumber
3

Jika Anda ingin menjadi lebih keren, Anda dapat menggunakan metode yang lebih canggih daripada animasi gif menggunakan HTMl5 canvas screencasting. Proyek x11-canvas-screencast akan membuat tangkapan layar animasi kanvas html5.

Anda mungkin telah melihat beberapa contoh terkenal dari teknologi ini di situs web Sublime Text. x11-canvas-screencastmengambil metode ini selangkah lebih maju dengan memasukkan pelacakan kursor mouse. Inilah demo dari apa yang dihasilkan x11-canvas-screencast

Hasilnya lebih baik daripada gif animasi karena tidak terbatas pada jumlah warna yang dimilikinya dan membutuhkan bandwidth yang lebih sedikit.

gene_wood
sumber
1
Itu bagus dan semua tetapi Anda tidak dapat dengan mudah berbagi ini, misalnya Slack, Twitter dll.
Elijah Lynn
@ElijahLynn sangat benar. Solusi ini dioptimalkan untuk frame rate tinggi, bandwidth rendah, kedalaman warna penuh. Ini tidak portabel (untuk menanamkan dalam tweet misalnya) karena memerlukan javascript.
gene_wood
3

Ok, jadi untuk juga menangkap klik mouse, satu-satunya yang saya temukan adalah key-mon(melalui README dari screenkey):

Maka saya:

  • mulai key-mon
  • Gunakan xrectseluntuk membuat koordinat layar dimasukkan ke dalam byzanzperintah
  • Jalankan byzanzperintah

... dan terlihat seperti ini:

out.gif

Catatan yang key-mon --visible_clickakan menggambar lingkaran di sekitar penunjuk mouse pada klik mouse - yang saya lebih suka, tetapi di Ubuntu 14.04.5 LTS ini agak rusak, karena lingkaran ini tidak muncul dan menghilang cukup cepat untuk menggambarkan klik dengan benar (yaitu menekan dan melepaskan mouse).

sdaau
sumber
2

Saya baru-baru ini membuat versi gabungan dari skrip yang sudah diposting di sini.
Pada dasarnya, ini memungkinkan Anda untuk merekam wilayah layar, tetapi dengan GUI sederhana.

Terima kasih untuk Rob W karena menyediakan skrip keren itu

Berikut kodenya (atau intinya jika Anda mau):

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

Jika Anda juga ingin rekaman yang terlihat dari klik mouse atau pukulan tombol, maka screenkey adalah taruhan terbaik Anda: https://github.com/wavexx/screenkey

nachtigall
sumber
2
Saya tidak melihat bagaimana screenkeymenangani klik mouse (sepertinya hanya untuk indikasi keyboard), namun README-nya merujuk pada key-monyang dapat melakukan itu, lihat jawaban saya di bawah ini.
sdaau
1

Gunakan gtk-recordmydesktopdan ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

Jalankan RecordMyDesktop menangkap sebagian layar / aplikasi untuk digunakan sebagai screencast:

gtk-recordmydesktop

Buat ogv2gif.shdengan konten berikut:

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

Gunakan :

./ogv2gif.sh yourscreencast.ogv

Referensi :

Fedir RYKHTIK
sumber
1

Saya menguji semua metode di atas, menemukan yang paling sederhana adalah:

  1. gunakan gtk-recordmydesktop dan key-mon untuk mendapatkan ogv
  2. ffmpeg -i xx.ogv xx.gif <- tanpa parameter apa pun .

fps asli, dan ukuran gif kurang dari file ogv.

eexpress utopis
sumber