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

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

Animated GIF image

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

Заглядывать

Это новое приложение, которое позволяет вам легко записывать GIF-файлы с вашего экрана.

peek screencast demo

В любом случае, имейте в виду, что GIF-файлы имеют очень ограниченную цветовую палитру, поэтому использовать их не очень хорошая идея.

Начиная с Ubuntu 18.10, вы можете установить Peek напрямую.

sudo apt install peek

Для более старых версий Ubuntu вы можете установить последние версии Peek из его PPA.

sudo add-apt-repository ppa:peek-developers/stablesudo apt updatesudo apt install peek

Более подробную информацию можно найти в Репозиторий GitHub.

Византия

Лучшее программное обеспечение, которое я когда-либо находил для записи GIF-скринкастов, - это Byzanz.

Byzanz хорош тем, что он записывает непосредственно в формате GIF, качество и частота кадров впечатляют при сохранении минимального размера файлов.

Установка

Byzanz теперь доступен из репозитория universe:

sudo apt-get install byzanz

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

Когда он будет установлен, вы можете запустить его в терминале.

Это небольшой пример, который я только что сделал с

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

enter image description here

Сначала установите это:

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

это необходимые материалы: ImageMagick, MPlayer и 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

Византия

Обзор

Этот ответ содержит три сценария оболочки:

  1. byzanz-record-window - Чтобы выбрать окно для записи.
  2. byzanz-record-region - Чтобы выбрать часть экрана для записи.
  3. Простой интерфейс с графическим интерфейсом для 1.

Вступление

Спасибо Бруно Перейре за знакомит меня с 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 startingDELAY=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 fileif [ $# -gt 0 ]; then    D="--duration=$@"else    echo Default recording duration 10s to /tmp/recorded.gif    D="--duration=10 /tmp/recorded.gif"fiXWININFO=$(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 startfor (( i=$DELAY; i>0; --i )) ; do    echo $i    sleep 1donebeepbyzanz-record --verbose --delay=0 --x=$X --y=$Y --width=$W --height=$H $Dbeep

byzanz-record-region

Зависимость: xrectsel от xrectsel. Клонируйте репозиторий и запустите make чтобы получить исполняемый файл. (Если он протестует против отсутствия файла makefile, запустите ./bootstrap и ./configure перед запуском "make").

#!/bin/bash# Delay before startingDELAY=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 fileif [ $# -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/xrectselARGUMENTS=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1echo Delaying $DELAY seconds. After that, byzanz will startfor (( i=$DELAY; i>0; --i )) ; do    echo $i    sleep 1donebeepbyzanz-record --verbose --delay=0 ${ARGUMENTS} $Dbeep

Графическая версия byzanz-record-window

Скрипт с простым диалоговым интерфейсом GUI:

#!/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 dateTIME=$(date +"%Y-%m-%d_%H%M%S")# Delay before startingDELAY=10# Standard screencast folderFOLDER="$HOME/Pictures"# Default recording durationDEFDUR=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 userUSERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)# Duration and output fileif [ $USERDUR -gt 0 ]; then    D=$USERDURelse    D=$DEFDURfi# Window geometryXWININFO=$(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 delaynotify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."#Actual recordingsleep $DELAYbeepbyzanz-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"

Смотрите также:

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-секундное видео webm объемом 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

Пример

screencast example

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, возможно, вам захочется установить Расширение темы чтобы упростить остановку Silentcast.

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

Запустите Silentcast из графического интерфейса среды вашего рабочего стола или запустите silentcast команда в терминале. Выберите свои настройки и следуйте инструкциям на экране. Когда вы закончите запись, вам будет представлено диалоговое окно для оптимизации конечного результата путем удаления определенного количества кадров.

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

Example

Записи:

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

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

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

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

Я создал record-gif.sh, улучшенная версия Роб У. byzanz-record-region:

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

record desktop with shell

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

Устанавливать

Я также создал сценарий установки

curl --location https://git.io/record-gif.sh | bash -
  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.

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

потом я:

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

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

out.gif

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

[Лицевая крышка (Cockos Incorporated | LICEcap )](Cockos Incorporated | LICEcap /) намного проще, чем любое из приведенных ниже решений, потому что оно основано на графическом интерфейсе. Это бесплатно, как в “свободе и цене”. Единственным недостатком является то, что вы должны запускать его через Wine.

Related: GIF screencasting; the UNIX way from the Unix & Linux Stack Exchange.

Этот пример скриншота сделан в Windows?

По теме: Как конвертировать видео в GIF с помощью ffmpeg с приемлемым качеством? для суперпользователя.

@Clément Это тоже было первое, что я заметил :slight_smile:

Я думаю, что vokoscreenNG также может записывать рабочий стол в GIF, но по какой-то причине моя версия 3.0.7 на Debian 11 не показывала формат GIF для записи, поэтому я использовал программу Peek, о которой упоминал @stommestack. Легко установить Peek в Debian 11 с помощью однострочной команды, предоставленной stommestack.