Запись действий с экрана в GIF на linux


date: 2018-05-14 19:29:40 +0300


Main

About

Contacts


Для записи происходящего на экране в изображение формата gif на linux можно воспользоваться программой byzanz.


Проблема в том, что для записи с экрана `byzanz` принимает координаты X и Y, а также значения ширины и высоты области, с которой нужно производить захват.


Решить эту проблему помогает скрипт `byzanz-record-window.sh`.

Найти одну из его вариаций легко на гитхабе. Вот пример работающего скрипта:


#!/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 X=$X

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

Чтобы записать все происходящее на экране, нужно сохранить данный скрипт под именем ```beyzanz-record-window.sh``` в домашнем каталоге, после чего выполнить команду


./beyzanz-record-window.xh 30 ~/record.gif

После ввода данной команды нужно будет щелкнуть мышкой по окну приложения, действия в котором нужно записать.

Скрипт начнет запись с задержкой в 10 секунд, после чего будет произведена запись продолжительностью в 30 секунд.

Результат будет сохранени в файле `~/record.gif`.


Пример записи с экрана




/posts/