Как создать анимированные GIF-изображения скринкаста?

476

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

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

Какой набор инструментов используется для их создания? Есть ли программа, которая делает это автоматически, или люди снимают скриншоты, преобразуют их в серию статических кадров, а затем создают изображения GIF?

andrewsomething
источник
6
LICEcap (http://www.cockos.com/licecap) намного проще, чем любое из приведенных ниже решений, поскольку он основан на графическом интерфейсе. Это бесплатно, как в свободе и цене. Единственным недостатком является то, что вы должны запустить его через Wine.
Деннис
4
Связанные: GIF скринкастинг; UNIX путь от Unix & Linux Stack Exchange.
Кристиан Чиупиту
2
Скриншот этого примера сделан на Windows?
Климент
@ 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 .

stommestack
источник
2
Да, это здорово. он работает только с X11 и нацелен на GNOME 3.
Ajith R Nair
2
@BeastWinterwolf и ExillustX: не публикуйте здесь сообщения об ошибках, используйте трекер, где люди действительно заботятся о том, чтобы их увидеть! Сообщите об этом здесь: github.com/phw/peek/issues
oligofren
2
Это отличный инструмент.
Майк
1
@ Jop V. как ты сделал запись записи?
Милковский
1
@milkovsky Я не записывал это. При этом, я думаю, они использовали виртуальную машину и записали это.
Stommestack
272

Byzanz

Лучшее программное обеспечение, которое я когда-либо нашел для записи 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
Спасибо, хороший инструмент! Цвета не всегда точны, но это мелочь. Я написал сценарий оболочки, который помогает захватить окно (выбранное пользователем во время выполнения), опубликованный в ответе ниже .
Роб W
57
Визанц не имеет пользовательского интерфейса! Должен ли я угадать x, y, ширину и высоту области, которую я хочу записать? Немного смешно, что в 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
maniat1k
источник
35
Другой способ оптимизировать gif - использовать gifsicle: gifsicle -O in.gif -o out.gifя только что попробовал и получил 100-кратное уменьшение размера файла.
Yrogirg
10
Для тех, кто интересуется, первый флаг в команде @Yrogirg - это заглавная буква "O", а не цифра "0" :)
brandizzi
2
Ничего себе, gifsicle просто сделал мой быстрее, но не меньше, а команда convert optimize сделала его ужасно уродливым.
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. Простой графический интерфейс для 1, MHC .

Введение

Спасибо Бруно Перейра за то, что познакомил меня сbyzanz ! Это довольно полезно для создания GIF-анимации. В некоторых случаях цвета могут быть отключены, но размер файла компенсирует это. Пример: 40 секунд, 3,7 МБ .

использование

Сохраните один / все следующие два сценария в папке внутри вашего $PATH. Вот пример использования первого скрипта для создания скринкаста определенного окна.

  1. Бегать byzanz-record-window 30 -c output.gif
  2. Перейдите в окно (alt-tab), которое вы хотите захватить. Нажмите здесь.
  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чтобы получить исполняемый файл. (Если он протестует, что нет make-файла, запустите ./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"
Роб W
источник
17
Эти скрипты хранятся где-то вроде github? Они очень полезны, было бы неплохо, если бы они содержались где-то лучше, чем текст в ответе StackOverflow.
KFro
1
@KFro Это Ask Ubuntu, а не SO;) Нет, я не поместил их в репозиторий git, потому что сами сценарии плохо документированы (для пользователей). К ответу прилагается сопроводительная документация, поэтому я не вижу смысла разделять файлы и документацию в репозитории Git.
Роб W
1
Нет больше кредитов для редактирования, но сделано ;-).
Rmano
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

Размер уменьшен с 435 Мб до 19 Мб

ограничение размера файла

Используйте опцию -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

Это уменьшило размер видео примера 1366x768 до 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

пример

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

fossfreedom
источник
Если у вас есть Докер и ваше видео 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 из графического интерфейса вашего рабочего стола или запустите silentcastкоманду в терминале. Выберите свои настройки и следуйте инструкциям на экране. Когда вы закончите запись, вам будет предложено диалоговое окно для оптимизации окончательного вывода путем удаления определенного количества кадров.

Более подробные инструкции по использованию смотрите в README: онлайн-версии GitHub или локальной версии, хранящейся в /usr/share/doc/silentcastzless или в вашем любимом редакторе.

пример

Примечания:

Silentcast все еще находится в стадии разработки, и, хотя он достаточно стабилен, вы можете столкнуться с некоторыми ошибками. Пожалуйста, сообщите о них на трекере проблем GitHub проекта . Если у вас возникли проблемы с установкой из PPA и вы используете поддерживаемую версию Ubuntu, оставьте комментарий ниже или свяжитесь с сопровождающим (мной) на Launchpad.

Сет
источник
как только я нажимаю «Стоп», он падает ...
Франциско Корралес Моралес
@FranciscoCorralesMorales Можете ли вы запустить его из командной строки, а затем попробовать? После сбоя возьмите выходные данные и загрузите их на paste.ubuntu.com и свяжите их здесь, чтобы я мог посмотреть. Спасибо!
Сет
1
Я могу подтвердить, что это прекрасно работает! Он создает очень маленький (650 КБ) файл .gif с большим разрешением вне открытых окон, как показано в этом ответе: askubuntu.com/questions/882419/… Я мог бы добавить плакат @Seth - отличный парень, который помог мне в АС общий чат настроил его :)
WinEunuuchs2Unix
Проект заброшен? За последние два года в хранилище не было никаких коммитов.
Поток
@flux к сожалению, между проблемами со здоровьем и универом, да. Хранилище в настоящее время заброшено. Проект на GitHub не является, однако, и вы можете получить последний код там.
Сет
8

Есть все виды сложных и хорошо работающих (предположительно) способов сделать это, перечисленные здесь. Однако я никогда не хотел проходить этот процесс ни до, ни с тех пор. Итак, я просто использую онлайн-конвертер, который соответствует моим потребностям, когда мне это нужно. Я использовал этот сайт:

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

Это не мой сайт, и я никак не связан с ними. Они только одни в моих закладках, и их гораздо больше.

KGIII
источник
Мне это нравится. Я уже использую simplescreenrecorder, чтобы записывать мой рабочий стол для youtube, поэтому превратить mkv в gif было легко.
Исаакль
8

Я создал record-gif.shулучшенную версию Rob W'sbyzanz-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 нет мерзавца. И я не знаю почему, но сценарий останавливается сразу после второго вопроса apt-get Y / N. Можете ли вы упаковать все зависимости в одну команду?
Крантиш
@Crantisz - это скрипт установщика, если вы просто хотите использовать record-gif.sh, вы можете получить его из
Édouard Lopez
4
  1. Установите эти 3 пакета: imagemagick mplayer gtk-recordmydesktop
  2. Запустите Desktop Recorder, чтобы захватить часть экрана / приложения для использования в качестве скринкаста
  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 canvas.

Возможно, вы видели несколько известных примеров этой технологии на веб-сайте Sublime Text. x11-canvas-screencastпродвигает этот метод на шаг вперед, включив отслеживание курсора мыши. Вот демонстрация того, что производит x11-canvas-screencast

Результат лучше, чем анимированный GIF, поскольку он не ограничен количеством цветов и требует меньше пропускной способности.

gene_wood
источник
1
Это хорошо, и все, но вы не можете легко поделиться этим, например, Slack, Twitter и т. Д.
Элайджа Линн
@ElijahLynn очень верно. Это решение оптимизировано для высокой частоты кадров, низкой пропускной способности, полной глубины цвета. Он не переносим (например, для встраивания в твит), так как для этого требуется JavaScript.
gene_wood
3

Итак, для того, чтобы также захватывать щелчки мыши, единственное, что я нашел, было key-mon(через README of screenkey):

Затем я:

  • Начало key-mon
  • Используйте, xrectselчтобы получить координаты экрана, помещенные в byzanzкоманду
  • Запустите byzanzкоманду

... и это выглядит примерно так:

out.gif

Обратите внимание, что key-mon --visible_clickпри наведении курсора мыши на окружность будет наведен круг, который я бы предпочел, но в Ubuntu 14.04.5 LTS это несколько ломается, поскольку этот круг не появляется и исчезает достаточно быстро, чтобы правильно проиллюстрировать щелчки (т.е. мыши нажимает и отпускает).

sdaau
источник
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"
Jacajack
источник
2

Если вам также нужны видимые записи щелчков мыши или нажатий клавиш, то вам лучше всего использовать screenkey: https://github.com/wavexx/screenkey

Нахтигаль
источник
2
Я не вижу, как screenkeyбудет обрабатывать щелчки мыши (кажется, это только для индикации клавиатуры), однако, его README относится к тому, key-monчто можно сделать, см. Мой ответ ниже.
Сдау
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.

утопический экспресс
источник