Я видел анимированные GIF-изображения скриншотов (как на картинке ниже), которые несколько раз рекламировались на этом сайте как способ улучшить ответы.
Какой набор инструментов используется для их создания? Есть ли программа, которая делает это автоматически, или люди снимают скриншоты, преобразуют их в серию статических кадров, а затем создают изображения GIF?
- это новое приложение, которое позволяет легко записывать GIF-файлы с экрана.
В любом случае, имейте в виду, что GIF-файлы имеют очень ограниченную цветовую палитру, поэтому это не очень хорошо идея их использования.
Начиная с Ubuntu 18.10, вы можете установить Peek напрямую.
sudo apt install peek
Для более старых версий Ubun tu, вы можете установить последние версии Peek из его PPA .
sudo add-apt-repository ppa:peek-developers/stable
sudo apt update
sudo apt install peek
Дополнительную информацию можно найти в репозитории GitHub .
የጂአይኤፍ ማያ ገጽ ማሳያዎችን ለመቅዳት ያገኘኋቸው ምርጥ ሶፍትዌሮች ባይዛንዝ ናቸው ፡፡ የፋይሎችን መጠን በትንሹ።
ባይዛንዝ አሁን ከአጽናፈ ሰማይ ማከማቻ ይገኛል:
sudo apt-get install byzanz
ሲጫን በተርሚናል ውስጥ ማስኬድ ይችላሉ።
ይህ አሁን በ
byzanz-record --duration=15 --x=200 --y=300 --width=700 --height=400 out.gif
Сначала установите это:
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 для преобразования снимков экрана в анимированные гифки.
convert output/* output.gif
вы можете оптимизировать снимки экрана следующим образом:
convert output.gif -fuzz 10% -layers Optimize optimised.gif
Этот ответ содержит три сценария оболочки:
byzanz-record-window
- Выбор окна для записи. byzanz-record -region
- Выбор части экрана для записи. Спасибо Бруно Перейре за , который познакомил меня с byzanz
! Это очень полезно для создания GIF-анимации. В некоторых случаях цвета могут быть нечеткими, но размер файла компенсирует это. Пример: 40 секунд, 3,7 МБ .
Сохраните один или все следующие два сценария в папке в вашем $ PATH
. Вот пример использования первого скрипта для создания скринкаста определенного окна.
byzanz-record-window 30 -c output.gif
$ DELAY
), в течение которых вы готовитесь к записи. beep
) ) Запустится byzanz
. 30
на шаге 1) byzanz
завершится. Снова раздастся звуковой сигнал. Я включил флаг -c
в byzanz-record-window
, чтобы показать, что любые аргументы моего сценария оболочки добавляются к byzanz -запись
сама. Флаг -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
byzanz-record-window
Скрипт с простым диалогом графического интерфейса пользователя:
#!/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"
См. Также:
byzanz-record-region
Роба В. Один из лучших инструментов, которые я использую, это ffmpeg
. Он может брать большую часть видео из такого инструмента, как kazam
, и конвертировать его в другой формат.
Установите его из software-center - он устанавливается автоматически, если вы устанавливаете отличный пакет ubuntu-limited-extras
.
Kazam может выводить видео в форматах mp4
или webm
. Обычно лучшие результаты получаются при выводе в формате mp4
.
Базовый синтаксис для преобразования видео в GIF:
ffmpeg -i [inputvideo_filename] -pix_fmt rgb24 [output.gif]
Преобразованные GIF-файлы - особенно со стандартным 25/29 кадр в секунду может быть очень большим. Например - 15-секундное видео размером 800 КБ Webm со скоростью 25 кадров в секунду может быть выведено до 435 МБ!
Вы можете уменьшить это количество следующими способами:
Используйте параметр -r [frame-per -секунда]
. Например,
ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif
Размер уменьшен с 435 МБ до 19 МБ
Используйте параметр -fs [размер файла]
. Например,
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
Silentcast - еще один отличный инструмент на основе графического интерфейса для создания анимированных изображений .gif. Его функции включают:
4 режима записи:
Весь экран
Внутри окна
Окно с декором
Пользовательский выбор
3 формата вывода:
.gif
.mp4
.webm
.png
(кадры)
.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 / silentcast
с zless или ваш любимый редактор.
Silentcast все еще находится в стадии разработки, и хотя он довольно стабилен, вы можете столкнуться с некоторыми ошибками. Если вы это сделаете, сообщите о них в трекере проблем GitHub проекта . Если у вас возникли проблемы с установкой из PPA и вы используете поддерживаемую версию Ubuntu, оставьте комментарий ниже или свяжитесь с сопровождающим (я) на Launchpad.
Я создал record-gif.sh
, улучшенную версию ] Роб В. byzanz-record-region
:
Неудачный графический интерфейс для
byzanz
, улучшено взаимодействие с пользователем ( выбираемая мышью область , индикатор выполнения записи, запись с возможностью воспроизведения ).
; save_as
назначение; $ HOME / record.again
). Я также создал сценарий установки
curl --location https://git.io/record-gif.sh | bash -
imagemagick
mplayer
gtk-recordmydesktop
ogv2gif.sh
с https://github.com/nicolas-raoul/ogv2gif./ogv2gif.sh yourscreencast.ogv
100% вдохновлён ответом maniat1k.
Здесь перечислены всевозможные сложные и хорошо работающие (предположительно) способы сделать это. Однако, я никогда не хотел проходить через этот процесс ни до, ни после. Поэтому я просто использую онлайн-конвертер, который соответствует моим потребностям несколько раз, когда мне это нужно. Я использовал этот сайт:
Это не мой сайт и я никак с ними не связан. Это только один из моих закладок, и их гораздо больше.
Если вы хотите стать еще более фантастическим, вы можете использовать более изощренный метод, чем анимированные gifs, используя скринкастинг HTMl5 canvas. Проект x11-canvas-screencast создаст захват анимированного экрана на холсте html5.
Вы, возможно, видели некоторые известные примеры этой технологии на сайте Sublime Text. x11-canvas-screencast
делает этот метод еще одним шагом вперед, включив в него отслеживание курсора мыши. Вот демонстрация того, что производит x11-canvas-screencast
Результат лучше, чем анимированный gif, так как он не ограничен количеством цветов и занимает меньше полосы пропускания.
Если вы также хотите видеть записи щелчков мыши или нажатий клавиш, то лучшим вариантом будет экранная кнопка: https://github.com/wavexx/screenkey
Я тестировал все вышеперечисленные методы и обнаружил, что самый простой из них:
частота кадров в секунду исходная, а размер gif меньше, чем файл ogv.
Итак, чтобы также фиксировать щелчки мыши, я нашел только key-mon
(через README screenkey
):
sudo apt-get install key-mon
Затем я:
key-mon
xrectsel
, чтобы поместить координаты экрана в команду byzanz
byzanz
команда ... и это выглядит примерно так:
Обратите внимание, что key-mon --visible_click
будет рисовать кружок вокруг указателя мыши при щелчке мышью - что я бы предпочел , но в Ubuntu 14.04.5 LTS это несколько нарушено, поскольку этот кружок не появляется и не исчезает достаточно быстро, чтобы правильно проиллюстрировать щелчки (т.е.мышь нажимает и отпускает).
Я недавно создал комбинированную версию скриптов, уже размещённую здесь.
.
В основном, это позволяет записывать область экрана, но с простым графическим интерфейсом.
Спасибо за Rob W за предоставление этих классных скриптов
Вот код (или gist, если хотите):
#!/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"
Используйте 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
Ссылки:
Это подход, который я использую для записи высококачественных GIF-файлов.