Як створити анімовані GIF-зображення скріншоту?


476

Я бачив анімовані зображення GIF на екранах (наприклад, наведені нижче), які кілька разів рекламувалися на цьому веб-сайті, як спосіб покращити відповіді.

Анімоване зображення GIF

Який ланцюжок інструментів використовується для їх створення? Чи є програма, яка робить це автоматично, або люди знімають екрани, перетворюючи їх у ряд статичних кадрів, а потім створюючи GIF-зображення?


6
LICEcap (http://www.cockos.com/licecap) набагато простіший, ніж будь-яке з наведених нижче рішень, оскільки він заснований на GUI. Це безкоштовно, як у свободі та ціні. Єдиним недоліком є ​​те, що вам потрібно запустити його через Wine.
Денніс

4
Супутнє: екранізація GIF; шлях UNIX з обміну стеками Unix та Linux.
Крістіан Цюпіту


2
Цей приклад знімка екрана зроблений для Windows?
Clément

@ Clément Це було перше, що я також помітив :)
UniversallyUniqueID

Відповіді:


269

Загляньте

Це новий додаток, який дозволяє легко записувати GIF-файли зі свого екрану.

заглянути демонстраційний екран

У будь-якому випадку, майте на увазі, що GIF мають дуже обмежену колірну палітру, тому використовувати їх не дуже добре.

З Ubuntu 18.10 ви можете встановити Peek безпосередньо.

sudo apt install peek

Для старих версій Ubuntu ви можете встановити останні версії Peek з його PPA .

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

Знайдіть більше інформації у репортажі GitHub .


2
Так, це чудово. його єдиний працює з X11 і орієнтований на GNOME 3.
Ajith R Nair

2
@BeastWinterwolf і ExillustX: не публікуйте тут звітів про помилки, використовуйте трекер випусків, де люди насправді бачать їх! Повідомте про це тут: github.com/phw/peek/issues
oligofren

2
Це чудовий інструмент.
Майк

1
@Jop V. як ти зробив запис запису?
мілковський

1
@milkovsky Я цього не записував. Коли вже було сказано, я думаю, що вони використали віртуальну машину і записали це.
stommestack

272

Візантія

Найкраще програмне забезпечення, яке я коли-небудь знаходив для запису екранізацій GIF - це Byzanz.

Byzanz чудовий тим, що він записує безпосередньо у GIF, якість та FPS вражають, зберігаючи розмір файлів до мінімуму.

Установка

Зараз Візань доступний у сховищі Всесвіту:

sudo apt-get install byzanz

Використання

Після його встановлення ви можете запустити його в терміналі.

Це невеликий приклад, який я робив саме зараз

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

введіть тут опис зображення


3
Спасибі, гарний інструмент! Кольори не завжди точні, але це незначна деталь. Я написав скрипт оболонки, який допомагає захопити вікно (вибране користувачем під час виконання), розміщений у відповіді нижче .
Роб Ш

57
У Byzanz немає інтерфейсу користувача! Чи повинен я вгадати х, у, ширину та висоту області, яку я хочу записати? Це трохи смішно, що в 2014 році мені все одно доведеться це робити.
Дан Даскалеску

5
@DanDascalescu Ніхто не каже, що вам потрібно використовувати його ... Я більше віддаю перевагу термінал, ніж графічний інтерфейс, що з цим не так?
Бруно Перейра

31
@DanDascalescu Не потрібно гадати. Ви можете використовувати xwininfoдля отримання властивостей вікна.
Маркус Мёллер

4
Будь-який спосіб уникнути необхідності дізнатися тривалість заздалегідь? Під час запису я ніколи не знаю заздалегідь, скільки часу це займе.
Ніколя Рауль

236

Спочатку встановіть це:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

це необхідні речі, ImageMagick, MPlayer та Desktop Recorder. Потім використовуйте програму Desktop Recorder, щоб захопити частину екрана / програми, яку буде використовувати як ефір екрана. Після того як Desktop Recorder збереже запис у відео OGV , MPlayer буде використовуватися для зйомки скріншотів JPEG, зберігаючи їх у каталозі 'output'.

На терміналі:

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

Використовуйте ImageMagick для перетворення знімків екрана в анімовані gif-файли.

convert output/* output.gif

ви можете оптимізувати знімки екрана таким чином:

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

35
Ще один спосіб оптимізації gif - це використання gifsicle: gifsicle -O in.gif -o out.gifя просто спробував і отримав 100- кратне зменшення розміру файлу.
Yrogirg

10
Для тих, хто цікавиться, перший прапор команди @Yrogirg - це велике "O", а не цифра "0" :)
brandizzi

2
Нічого, gifsicle просто зробила мій швидшим, але не меншим, а команда оптимізації перетворення зробила це реально некрасивим.
MalcolmOcean

6
Я рекомендую поєднання двох останніх convertкроків в один: convert output/* -layers Optimize output.gif. Для мене це збільшило час обробки, а також зробило вихідний файл меншим. Я не бачу причин робити ці кроки окремо. (Я не намагався -fuzz 10%аргументувати.)
thejoshwolfe

1
Як і @MalcolmOcean, convertзаява зробила це надзвичайно огидно. Згідно з документами ( imagemagick.org/script/command-line-options.php#layers ), optimizeреалізація може змінюватися з часом. Але злегка виправлена convertзаява з -coalesceпрапором покращила речі, але все ще не там, де це було прийнятно. Мені довелося використовувати -layers optimize-transparencyналаштування для найкращих результатів:convert 'output/*.jpg' -coalesce -layers optimize-transparency optimised.gif

136

Огляд

Ця відповідь містить три сценарії оболонки:

  1. byzanz-record-window - Вибір вікна для запису.
  2. byzanz-record-region - Вибір частини екрана для запису.
  3. Простий інтерфейс GUI для 1, MHC .

Вступ

Дякую Бруно Перейрі за те, що познайомив менеbyzanz ! Це досить корисно для створення анімації GIF. Кольори можуть бути вимкнені в деяких випадках, але розмір файлу це доповнює. Приклад: 40 секунд, 3,7 Мб .

Використання

Збережіть один / усі наступні два сценарії у папці у вашому $PATH. Ось приклад використання першого сценарію для створення скріншота певного вікна.

  1. Біжи byzanz-record-window 30 -c output.gif
  2. Перейдіть до вікна (вкладка alt), яке ви хочете зробити. Натисніть на нього.
  3. Зачекайте 10 секунд (з жорстким кодом $DELAY), протягом яких ви готуєтесь до запису.
  4. Після звукового сигналу (визначеного у beepфункції), byzanzпочнеться.
  5. Через 30 секунд (це значення 30кроку 1) byzanzзакінчується. Знову вийде звуковий сигнал.

Я включив -cпрапор, byzanz-record-windowщоб проілюструвати, що будь-які аргументи до мого сценарію оболонки додаються до byzanz-recordсебе. -cПрапор вказує byzanzтакож включити курсор в скрінкасти.
Див. man byzanz-recordАбо byzanz-record --helpдля отримання додаткової інформації.

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

Залежність: xrectselвід xrectsel . Клоніруйте сховище та запустіть, makeщоб отримати виконуваний файл. (Якщо він протестує, немає makefile, запустіть ./bootstrapі ./configureперед запуском `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

Версія Gui byzanz-record-window

(коментар MHC ): Я взяв на себе можливість змінити сценарій за допомогою простого діалогу з графічним інтерфейсом

#!/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
Чи зберігаються ці сценарії десь на зразок github? Вони дуже корисні, було б добре, якби вони зберігалися десь краще, ніж текст у відповіді StackOverflow.
KFro

1
@KFro Це Ask Ubuntu, а не так;) Ні, я не помістив їх у сховище git, оскільки самі сценарії погано задокументовані (для користувачів). Додана документація додається до відповіді, тому я не бачу ніякої користі від розбиття файлів і документації у сховищі Git.
Rob W

1
Більше кредитів для редагування немає, але зроблено ;-).
Рмано

2
Просто хотів сказати величезне спасибі за це - приголомшлива відповідь і мені дуже допомогли. Ось що я закінчив. Мені подобається використовувати notify-sendтакож, якщо звук вимкнено.
Даніель Бакмастер

2
@Masi Byzanz - і ці сценарії - працюють мені чудово в 16.04
Джефф Пукетт

51

ffmpeg Встановіть ffmpeg

Один з найкращих інструментів, якими я користуюся, - це ffmpeg. Він може знімати більшість відео з інструменту екранізації, наприклад, kazamта конвертувати його в інший формат.

Встановіть це з програмного центру - він автоматично встановлюється, якщо встановити чудовий ubuntu-restricted-extrasпакет.

Kazam може виводити у відеоформати mp4або webm. Як правило, ви отримуєте кращі результати виведення у mp4форматі.

Приклад створення синтаксису GIF

Основний синтаксис для перетворення відео в gif:

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

Перетворені GIF - особливо ті, які мають стандартний кадр в секунду 25/29, можуть бути дуже великими. Наприклад, 15-секундне відео із швидкістю 800 Кб при 25 кадрів в секунду може вивести 435 Мбіт!

Ви можете зменшити це кількома методами:

частота кадрів

Використовуйте опцію -r [frame-per-second]

наприклад ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif

Розмір зменшено з 435Mb до 19Mb

обмеження розміру файлу

Використовуйте опцію -fs [filesize]

наприклад ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif

Примітка - це приблизний розмір вихідного файлу, тому розмір може бути трохи більшим за вказаний.

розмір вихідного відео

Використовуйте опцію -s [widthxheight]

наприклад ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif

Це зменшило приклад розміру відео 1366х768 до 26Мб

петля назавжди

Іноді ви можете хотіти, щоб GIF назавжди зациклювався.

Використовуйте опцію -loop_output 0

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

додатково оптимізувати та скорочувати

якщо ви використовуєте imagemagick convertз коефіцієнтом нечіткості від 3% до 10%, ви можете значно зменшити розмір зображення

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

нарешті

комбінуйте деякі з цих варіантів, щоб звести до чогось керованого для Ask Ubuntu.

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

слідом за ним

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

приклад

введіть тут опис зображення


Якщо у вас є Докер і ваше відео demo.mkvви можете запустити ці команди: 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
Мені воно скаржиться, що немає такого варіанту, як -loop_output...

1
+1 Найкраща відповідь. Але одне питання ви все ще вважаєте ubuntu-restricted-extrasвідмінним ??
Северус Тукс

1
@ParanoidPanda зараз варіант є -loop. Так було б -loop 0. Ось робоча команда в 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- це положення X, Y для запуску прямокутника 100x100. xgrabприймає екран як вхід.
Санбор

34

Silentcast

Silentcast - це ще один чудовий інструмент для створення анімованих зображень .gif. До його особливостей належать:

  • 4 режими запису:

    1. Цілий екран

    2. Всередині вікна

    3. Вікно з прикрасою

    4. Спеціальний вибір

  • 3 вихідні формати:

    1. .gif

    2. .mp4

    3. .webm

    4. .png (кадри)

    5. .mkv

  • Не потрібно встановлення (портативний)

  • Спеціальний робочий каталог

  • Користувальницькі fps

Установка

Якщо вам потрібна звичайна установка та працює підтримувана версія Ubuntu, ви можете встановити Silentcast від PPA:

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

Якщо ви не підтримуєте підтримувану версію Ubuntu (вам справді слід оновити!), Вам потрібно буде завантажити останню версію зі сторінки GitHub і вручну задовольнити залежності (ви можете придбати yad і ffmpeg звідси і тут відповідно) або, якщо ви використовуєте трохи більш нову версію, таку як 13.10, ви можете спробувати завантажити .deb безпосередньо .

Якщо ви використовуєте Gnome, ви можете встановити розширення Topicons, щоб полегшити зупинку Silentcast.

Використання

Запустіть Silentcast з gui середовища робочого столу або запустіть silentcastкоманду в терміналі. Виберіть налаштування та виконайте підказки на екрані. Після завершення запису вам відкриється діалогове вікно для оптимізації кінцевого виводу шляхом видалення певної кількості кадрів.

Щоб отримати докладніші рекомендації щодо використання, погляньте на README - онлайн-версію GitHub або локальну версію, що зберігається в /usr/share/doc/silentcastпрограмі zless або улюбленому редакторі.

Приклад

Примітки:

Silentcast все ще знаходиться на стадії розробки, і хоча це досить стабільно, ви можете зіткнутися з деякими помилками. Якщо у вас є, повідомте про них у трекері проблем GitHub проекту . Якщо у вас виникли проблеми з установкою з PPA і ви працюєте з підтримуваною версією Ubuntu, залиште коментар нижче або зв’яжіться з обслуговуючим персоналом (мною) на Launchpad.


як тільки я натиснув "Стоп", він виходить з ладу ...
Франциско Корралес Моралес

@FranciscoCorralesMorales Чи можете ви запустити його з командного рядка, а потім спробувати? Після того, як він вийде з ладу, візьміть висновок і завантажте його на paste.ubuntu.com і зв’яжіть його назад, щоб я міг подивитися. Дякую!
Сет

1
Я можу підтвердити, що це чудово працює! Він створює дуже маленький .gif-файл (650 КБ) з великою роздільною здатністю поза відкритими вікнами, як відображено у цій відповіді: askubuntu.com/questions/882419/… Я можу додати плакат @Seth - чудовий хлопець і допоміг мені в АС загальна кімната налаштована :)
WinEunuuchs2Unix

Проект покинутий? За останні два роки жодних комісій до сховища не було.
Потік

@flux, на жаль, між проблемами зі здоров’ям та університетом, так. Зараз сховище покинуто. Однак проект на GitHub не є, і ви можете отримати там останній код.
Сет

8

Тут перераховані всілякі складні та справні (імовірно) способи зробити це. Однак я ніколи не хотів пройти цей процес ні до цього часу. Отже, я просто використовую онлайн-конвертер, який відповідає моїм потребам у кілька разів, коли мені це потрібно. Я використовував цей сайт:

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

Це не мій сайт, і я жодним чином не пов’язаний з ними. Вони лише ті, що в моїх закладках, і є багато інших.


Мені подобається це. Я вже використовую simplescreenrecorder для запису мого робочого столу для youtube при нагоді, тому перетворити mkv в gif було легко.
isaaclw

8

Я створив record-gif.shвдосконалену версію Rob Wbyzanz-record-region :

Напружений графічний інтерфейс для byzanzпокращив користувальницький досвід ( область , що вибирається мишею , панель ходу запису, запис із можливістю відтворення )

запису робочого столу з оболонкою

  • встановити запис duration;
  • встановити save_asпризначення;
  • виберіть –з мишкою - область для запису;
  • створити сценарій для відтворення запису (див. $HOME/record.again).

Встановити

Я також створив сценарій встановлення

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

1
Вам потрібно зробити, sudo apt install autoconf byzanzперш ніж запускати цей сценарій. він не встановлений за замовчуванням в ubuntu
Crantisz

@Crantisz спасибі, я оновив сценарій встановлення для встановлення autoconfта byzanz. Ви можете спробувати?
Едуард Лопес

Я тільки тестував це на інших ПК. У моїй щойно встановленій системі ubuntu немає git. І я не знаю чому, але сценарій зупиняється одразу після другого влучного питання Y / N. Чи можете ви запакувати всі залежності однією командою?
Крантіш

Команда @Crantisz - це сценарій встановлення, якщо ви просто хочете записати rekord.gif.sh, ви можете отримати його з
Édouard Lopez

4
  1. Встановіть ці 3 пакети: imagemagick mplayer gtk-recordmydesktop
  2. Запустіть Настільний рекордер, щоб захопити частину екрана / програми, яка буде використана в якості екранного екрану
  3. Завантажте ogv2gif.shз https://github.com/nicolas-raoul/ogv2gif
  4. Виконати: ./ogv2gif.sh yourscreencast.ogv
  5. Файл GIF буде розміщений у тій самій директорії

На 100% надихнув відповідь maniat1k .


3

Якщо ви хочете отримати ще більш фантазії, ви можете скористатися більш досконалим методом, ніж анімовані gif-файли, використовуючи екранізацію полотна HTMl5. Проект x11-canvas-screencast створить захоплення анімованого екрану html5.

Можливо, ви бачили деякі відомі приклади цієї технології на веб-сайті Sublime Text. x11-canvas-screencastробить цей метод на крок далі, включаючи відстеження курсору миші. Ось демонстрація того, що виробляє x11-canvas-screencast

Результат кращий, ніж анімований gif, оскільки він не обмежується кількістю кольорів, і він займає меншу пропускну здатність.


1
Це добре, і все, але ви не можете легко поділитися цим, наприклад, Slack, Twitter тощо
Elijah Lynn

@ElijahLynn дуже правда. Це рішення оптимізовано для високої частоти кадрів, низької пропускної здатності, повної глибини кольору. Він не портативний (наприклад, для вбудовування у твіт), оскільки для нього потрібен JavaScript.
gene_wood

3

Гаразд, для того, щоб також фіксувати клацання миші, єдине, що я знайшов, це було key-mon(через README від screenkey):

Потім я:

  • Старт key-mon
  • Використовуйте xrectselдля отримання координат екрана, введених у byzanzкоманду
  • Виконайте byzanzкоманду

... і це виглядає приблизно так:

out.gif

Зверніть увагу, що key-mon --visible_clickнамалюйте коло навколо вказівника миші при натисканні миші - що я б хотів, але в Ubuntu 14.04.5 LTS це дещо розірвано, оскільки це коло не з’являється і зникає досить швидко, щоб правильно проілюструвати кліки (тобто миші натискає та відпускає).


2

Нещодавно я створив комбіновану версію сценаріїв, вже розміщену тут.
В основному, це дозволяє записувати область екрану, але з простим графічним інтерфейсом.

Дякуємо Робу W за надання цих класних сценаріїв

Ось код (або суть, якщо хочете):

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

Якщо ви також хочете бачити видимі кліки миші або натискання клавіш, тоді найкраща ставка екрана: https://github.com/wavexx/screenkey


2
Я не бачу, як screenkeyби обробляти клацання миші (здається, це стосується лише індикації клавіатури), однак, її README посилається на те, key-monщо можна зробити, дивіться мою відповідь нижче.
sdaau

1

Використання gtk-recordmydesktopта ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

Запустіть RecordMyDesktop, щоб захопити частину екрана / програми для використання в якості екранного екрану:

gtk-recordmydesktop

Створіть ogv2gif.shіз наступним вмістом:

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

Використай це :

./ogv2gif.sh yourscreencast.ogv

Список літератури:


1

Я перевіряю все вищевказаний метод, виявив, що найбільш простим є:

  1. використовувати gtk-recordmydesktop та key-mon, щоб отримати ogv
  2. ffmpeg -i xx.ogv xx.gif <- без жодного параметра .

fps є оригінальним, а розмір gif-файлу менше, ніж файл ogv.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.