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

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

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

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

410 голосов | спросил andrewsomething 25 FebruaryEurope/MoscowbSat, 25 Feb 2012 23:19:45 +0400000000pmSat, 25 Feb 2012 23:19:45 +040012 2012, 23:19:45

15 ответов


162

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

peek screencast demo

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

Вы можете установить последние версии Peek на Ubuntu из PPA .

sudo add-apt-repository ppa: peek-developers /stable
Обновление sudo apt
sudo apt установить peek

Найдите дополнительную информацию в репозитории GitHub: https://github.com/phw/peek

ответил Jop V. 7 +03002016-10-07T00:36:33+03:00312016bEurope/MoscowFri, 07 Oct 2016 00:36:33 +0300 2016, 00:36:33
257

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

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

Установка

Byzanz теперь доступен из репозитория юниверса:

sudo apt-get install byzanz

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

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

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

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

введите описание изображения здесь>> </p></div>
										<div class=ответил Bruno Pereira 19 PMpThu, 19 Apr 2012 23:47:07 +040047Thursday 2012, 23:47:07

232

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

sudo apt-get install imagemagick mplayer gtk-recordmydesktop

это необходимый материал, ImageMagick, MPlayer и Desktop Recorder. Затем используйте Настольный рекордер , чтобы захватить часть экрана /приложения для использования в качестве скринкаста. После того, как Desktop Recorder сохранил запись в видео OGV , MPlayer будет использоваться для захвата снимков в формате JPEG, сохраняя их в каталоге «output».

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

mplayer -ao null <имя видеофайла> -vo jpeg: outdir = output

Используйте ImageMagick , чтобы преобразовать скриншоты в анимированные gifs.

convert output /* output.gif

вы можете оптимизировать скриншоты следующим образом:

convert output.gif -fuzz 10% -layers Оптимизировать optimised.gif
ответил maniat1k 25 FebruaryEurope/MoscowbSat, 25 Feb 2012 23:40:48 +0400000000pmSat, 25 Feb 2012 23:40:48 +040012 2012, 23:40:48
136

Обзор

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

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

Введение

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

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

Сохраните один или все следующие два сценария в папке в вашем $ 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 также включить курсор в screencast.
См. man byzanz-record или byzanz-record --help для более подробной информации.

byzanz-зачетное окно

 #! /bin /bash

# Задержка перед запуском
ЗАДЕРЖКИ = 10

# Звуковое уведомление, позволяющее узнать, когда начнется запись (и заканчивается)
beep () {
    paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}

# Продолжительность и выходной файл
if [$ # -gt 0]; тогда
    D = "- длительность = $ @"
еще
    echo Продолжительность записи по умолчанию 10 с на /tmp/recorded.gif
    D = "- duration = 10 /tmp/recorded.gif"
фи
XWININFO = $ (xwininfo)
читать X <$ (awk -F: '/Абсолютный верхний левый X /{print $ 2}' <<"$ XWININFO")
считывают Y <$ (awk -F: '/Абсолютный верхний левый Y /{print $ 2}' <<"$ XWININFO")
считывают W <$ (awk -F: '/Width /{print $ 2}' <<"$ XWININFO")
считывают H <$ (awk -F: '/Height /{print $ 2}' <<"$ XWININFO")

echo Задержка $ DELAY секунд. После этого byzanz начнет
для ((i = $ DELAY; i> 0; -i)); делать
    echo $ i
    спать 1
сделанный

гудок
byzanz-record --verbose --delay = 0 --x = $ X - y = $ Y --width = $ W --height = $ H $ D
гудок

byzanz-зачетной области

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

 #! /bin /bash

# Задержка перед запуском
ЗАДЕРЖКИ = 10

# Звуковое уведомление, позволяющее узнать, когда начнется запись (и заканчивается)
beep () {
    paplay /usr/share/sounds/KDE-Im-Irc-Event.ogg &
}

# Продолжительность и выходной файл
if [$ # -gt 0]; тогда
    D = "- длительность = $ @"
еще
    echo Продолжительность записи по умолчанию 10 с на /tmp/recorded.gif
    D = "- duration = 10 /tmp/recorded.gif"
фи

# xrectsel из https://github.com/lolilolicon/xrectsel
ARGUMENTS = $ (xrectsel "--x =% x - y =% y --width =% w --height =% h") || выход -1

echo Задержка $ DELAY секунд. После этого byzanz начнет
для ((i = $ DELAY; i> 0; -i)); делать
    echo $ i
    спать 1
сделанный
гудок
byzanz-record --verbose --delay = 0 $ {ARGUMENTS} $ D
гудок

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

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

 #! /bin /bash

# АВТОР: (c) Rob W 2012, измененный MHC (https://askubuntu.com/users/81372/mhc)
# NAME: GIFRecord 0.1
# ОПИСАНИЕ: сценарий для записи GIF-скринкастов.
# ЛИЦЕНЗИЯ: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# DEPENDENCIES: byzanz, gdialog, notify-send (установить через sudo add-apt-repository ppa: fossfreedom /byzanz; sudo apt-get update & & sudo apt-get install byzanz gdialog notify-osd)

# Время и дата
TIME = $ (дата + "% Y-% m-% d_% H% M% S")

# Задержка перед запуском
ЗАДЕРЖКИ = 10

# Стандартная папка screencast
FOLDER = "$ HOME /Pictures"

# Продолжительность записи по умолчанию
DEFDUR = 10

#Звуковое уведомление, позволяющее знать, когда запись начнется (и заканчивается)
beep () {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

# Пользовательская продолжительность записи, заданная пользователем
USERDUR = $ (gdialog --title «Продолжительность?» - входной сигнал «Пожалуйста, введите продолжительность скринкаста в секундах» 200 100 2 & 1)

# Продолжительность и выходной файл
если [$ USERDUR -gt 0]; тогда
    D = $ USERDUR
еще
    D = $ DEFDUR
фи

# Геометрия окна
XWININFO = $ (xwininfo)
читать X <<(awk -F: '/Абсолютный верхний левый X /{print $ 2}' <<"$ XWININFO")
читать Y <<(awk -F: '/Абсолютный верхний левый Y /{print $ 2}' <<"$ XWININFO")
читать W <<(awk -F: '/Width /{print $ 2}' <<"$ XWININFO")
читать H <<(awk -F: '/Height /{print $ 2}' <<"$ XWININFO")

# Уведомлять пользователя о времени и задержке записи
notify-send "GIFRecorder" "Продолжительность записи, заданная в $ D секунд. Запись начнется через $ DELAY seconds."

#Активная запись
sleep $ DELAY
гудок
byzanz-record -c -verbose -delay = 0 -duration = $ D -x = $ X -y = $ Y -width = $ W -height = $ H "$ FOLDER /GIFrecord_ $ TIME .gif»
гудок

# Уведомлять пользователя о завершении записи.
notify-send «GIFRecorder» «Сценарий сохранен в $ FOLDER /GIFrecord_ $ TIME.gif"
ответил Rob W 14 +04002012-10-14T19:44:49+04:00312012bEurope/MoscowSun, 14 Oct 2012 19:44:49 +0400 2012, 19:44:49
47

ffmpeg  Установить ffmpeg

Одним из лучших инструментов, которые я использую, является ffmpeg. Это может сделать большинство видео с помощью инструмента screencast, такого как kazam, и преобразовать его в другой формат.

Установите это из software-center - он будет автоматически установлен, если вы установите отличный пакет ubuntu-limited-extras.

Kazam может выводить в видеоформатах mp4 или webm. Как правило, вы получаете лучшие результаты, выводимые в формате mp4.

пример синтаксиса GIF

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

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

Конвертируемые GIF-файлы, особенно со стандартным 25/29 кадрами в секунду, могут быть очень большими. Например, видеоролик на 800 Кб с 15-секундным видео с частотой 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

Это уменьшило размер видео размером 1366x768 до 26 МБ

цикл навсегда

Иногда вам может понадобиться цикл GIF навсегда.

Используйте опцию -loop_output 0

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

дальнейшая оптимизация и сжатие

, если вы используете imagemagick convert с коэффициентом fuzz от 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 6 MaramTue, 06 Mar 2012 01:46:58 +04002012-03-06T01:46:58+04:0001 2012, 01:46:58
33

Silentcast

Silentcast - еще один отличный инструмент для создания анимированных изображений .gif. Его функции включают в себя:

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

    1. Весь экран

    2. Внутреннее окно

    3. Окно с отделкой

    4. Пользовательский выбор

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

    1. .gif

    2. .mp4

    3. .webm

    4. .png (frames)

    5. .mkv

  • Не требуется установка (переносная)

  • Пользовательский рабочий каталог

  • Пользовательский fps

Установка

Если вы хотите выполнить обычную установку и используете поддерживаемую версию Ubuntu, вы можете установить Silentcast по протоколу PPA:

sudo add-apt-repository ppa: sethj /silentcast
Обновление sudo apt-get
sudo apt-get install silentcast

Если вы не используете поддерживаемую версию Ubuntu (вам действительно нужно обновить!), вам необходимо загрузить последнюю версию из на странице GitHub и вручную удовлетворить зависимостям (вы можете приобрести yad и ffmpeg из здесь и здесь соответственно) или, если вы используете немного более новую версию, такую ​​как 13.10 вы можете попробовать непосредственно загрузить .deb .

Если вы используете Gnome, вы можете установить расширение тем для , чтобы упростить остановку Silentcast.

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

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

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

Пример

Примечания:

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

ответил Seth 29 +03002014-10-29T04:27:10+03:00312014bEurope/MoscowWed, 29 Oct 2014 04:27:10 +0300 2014, 04:27:10
7

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

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

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

ответил KGIII 17 +03002015-10-17T20:45:50+03:00312015bEurope/MoscowSat, 17 Oct 2015 20:45:50 +0300 2015, 20:45:50
7

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

  

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

 запись рабочего стола с оболочкой

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

Установка

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

curl --location https://git.io/record-gif.sh | bash -
ответил Édouard Lopez 6 +03002016-10-06T23:27:39+03:00312016bEurope/MoscowThu, 06 Oct 2016 23:27:39 +0300 2016, 23:27:39
3
  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 .

ответил Nicolas Raoul 30 J0000006Europe/Moscow 2016, 10:25:36
2

Если вы хотите стать еще более привлекательным, вы можете использовать более сложный метод, чем анимированные gif-ы, используя HTMl5-скринкастинг. В проекте x11-canvas-screencast будет создан анимированный захват экрана html5.

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

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

ответил gene_wood 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 22 Sep 2015 20:37:33 +0300 2015, 20:37:33
2

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

Тогда I:

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

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

 out.gif

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

ответил sdaau 24 AM00000070000001231 2016, 07:34:12
1

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

Спасибо за Rob W за предоставление этих классных сценариев

Вот код (или gist , если хотите):

 #! /bin /bash

# Записывает выбранную область экрана с графическим интерфейсом

# Это комбинированная версия сценариев записи GIF, которые можно найти здесь: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast
# Спасибо Робу и другому автору (не упоминается) за создание этого прекрасного сценария

# У меня нет прав на код, я не писал
# ~ Jacajack

DELAY = 5 # Перед началом работы
DEFDUR = 10 # Длительность записи по умолчанию
TIME = $ (дата + "% Y-% m-% d_% H% M% S") #Timestamp
FOLDER = "$ HOME /Pictures /Byzanz" # Выходной каталог Default

# Звуковое уведомление, позволяющее знать, когда запись начнется (и заканчивается)
beep () {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

# Обычная продолжительность записи, заданная пользователем
USERDUR = $ (gdialog --title «Продолжительность?» - входной сигнал «Пожалуйста, введите продолжительность скринкаста в секундах» 200 100 2 & 1)

#Duration и выходной файл
если [$ USERDUR -gt 0]; тогда
    D = $ USERDUR
еще
    D = $ DEFDUR
фи

# Получать координаты с помощью xrectsel из https://github.com/lolilolicon/xrectsel
REGION = $ (xrectsel "--x =% x --y =% y --width =% w --height =% h") || выход -1

notify-send "GIFRecorder" "Продолжительность записи, заданная в $ D секунд. Запись начнется через $ DELAY seconds."

для ((i = $ DELAY; i> 0; -i)); делать
    спать 1
сделанный

#Record
гудок
byzanz-record --cursor --verbose --delay = 0 $ {REGION} --duration = $ D "$ FOLDER /byzanz-record-region- $ TIME.gif"
гудок

notify-send «GIFRecorder» «Сценарий сохранен в $ FOLDER /byzanz-record-region- $ TIME.gif"
ответил Jacajack 26 Maypm16 2016, 23:17:40
1

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

ответил nachtigall 12 J0000006Europe/Moscow 2016, 09:25:05
0

Используйте gtk-recordmydesktop и ffmpeg:

apt-get install gtk-recordmydesktop ffmpeg

Запустите RecordMyDesktop, чтобы захватить часть экрана /приложения для использования в качестве скринкаста:

GTK-RecordMyDesktop

Создайте ogv2gif.sh со следующим содержимым:

input_file = $ 1
FPS = 15
ШИРИНА = 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

Ссылки:

ответил Fedir RYKHTIK 14 FebruaryEurope/MoscowbTue, 14 Feb 2017 12:15:28 +0300000000pmTue, 14 Feb 2017 12:15:28 +030017 2017, 12:15:28
0

Я тестирую все вышеописанный метод, нашел самый простой из них:

  1. используйте gtk-recordmydesktop и key-mon , чтобы получить ogv
  2. ffmpeg -i xx.ogv xx.gif <- без каких-либо параметров .

fps является оригинальным, а размер gif меньше, чем файл ogv.

ответил utopic eexpress 10 MarpmFri, 10 Mar 2017 13:11:41 +03002017-03-10T13:11:41+03:0001 2017, 13:11:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132