27 Март 2007 г.

Создание скринкастов в Linux.

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

Большинство таких видео файлов создается с помощью специальных программ, которые могут сохранять все действия, происходящие на экране, в файл (обычно это или видео файл (.mpeg) или анимированный .gif или флеш .swf). Сохраненный таким образом файл называется скринкастом (screencast). Часто такая запись сопровождается аудио комментарием. Изначально скринкасты создавались в учебных целях, для того чтобы пользователю было легче разобраться с программой. Но область применения скринкастов на этом не ограничилась, чему служит доказательством широкое распространение видео файлов, показывающих лишь красоту десктопа и различных 3D эффектов.

Если и вам захотелось создать подробное видео руководство, посвященное какой-нибудь программе, или если вы хотите всему миру показать каких красивых эффектов можно достичь с установленной последней версией Beryl'a, тогда эта статья для вас.

Istanbul

Причина, по которой я начал именно с этой программы, довольно таки банальна, Istanbul входит в репозитории Ubuntu. Поэтому для установки достаточно лишь набрать в консоли:

serhiy@kubuntu:~$ sudo apt-get install istanbul

Пользователям других дистрибутивов можно скачать и установить программу из исходников. После запуска Istanbul в трее появится белый квадратик с красным шариком посередине (такой себе квадратный флаг Японии). Все настройки доступны в пункте меню "Параметры", в который можно зайти, нажав по иконке правой кнопкой мыши.



Проделав все настройки, можно приступать к записи экрана (по умолчанию файл будет сохранен под названием desktop-recording.ogg в домашней директории). Для этого нужно лишь нажать левой кнопкой мыши по иконке (нажмите еще раз для того чтобы выключить).
Поскольку у меня нет возможности приводить здесь пример в видео формате, буду вставлять скриншоты.



Как видно из рисунка, при сжатии четкость немного теряется, но зато размер файла радует, короткий ролик занимает чуть больше мегабайта. Единственное, что раздражает, это желтый шлейф, оставляемый курсором мыши. Я так и не нашел как с этим бороться. Но эта проблема возникает не у всех (с чем она связана?). Поэтому можете попытать счастья. Тем более это не так уж и сложно. В целом, если бы не этот дефект, программа по простоте установки и использования и по качеству скринкаста заслуживает высокую оценку.


Byzanz

Еще одна программа, которую можно установить с репозитория:

$ sudo apt-get install byzanz

Эта программа не имеет GUI интерфейса, поэтому вся работа происходит в консоли. Самый простой способ записать скринкаст сводится к выполнению следующей команды:

$ byzanz-record my_desktop.gif

Как видите, результат сохранеется в виде GIF-файла. Для более подробного ознакомления с программой наберите:

$ byzanz-record --help




Вы увидите, что можно задавать длительность ролика (по умолчанию 10 сек.), координаты области экрана, которую нужно записывать, ширину и высоту записываемого прямоугольника, записывать ли курсор и некоторые другие возможности. Теперь о результатах. Ролик длительностью 10 секунд занял 5.8 мегабайт (запись всего экрана размером 1280-1024 пикселей). Качество изображения как минимум не лучше чем у Istanbul. Сказать определнно не могу, так как просмотрщик изображений очень тормозит при просмотре такой "малютки". В общем программа может и подойтет для записи некоторой (маленькой) части экрана, но определенно не всего экрана.

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


Recordmydesktop

Как говорится, название говорит само за себя. Для установки программы нужно скачать исходники. Распаковываем полученный архив, заходим в созданную директорию и устанавливаем:

$ tar -xzvf recocrmydesktop-0.3.3.1.tar.gz
$ cd recordmydesktop-0.3.3.1
$ ./configure
$ make
$ sudo make install

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

alsa (libasound)
X
libXext
libXdamage
libogg
libvorbis
libtheora

Если при конфигурации увидите сообщения об ошибках, скорей всего это будет связано как раз с отсутствием этих файлов. Установите их с помощью apt (aptitude). У меня программа стала без проблем.

Для создания видео файла (программа сохраняет выход в формате Ogg Theora-Vorbis) наберите в консоли следующее:

$ recordmydesktop -o mydesk.ogg

С помощью ключа --help можно посмотреть дополнительные опции. Их немного больше чем у byzanz, но в целом они похожи. Ниже приведен скриншот из скринкаста (извините за такой каламбур), созданного с помощью recordmydesktop.


Качество изображения лучше чем у Istanbul, но зато и размер больше. Видео файл длительностью 15 секунд занял почти 6 Мегабайт. Зато все дейтсвия, которые я вытворял с окнами и рабочим столом с устновленным Beryl воспроизводились как живые. Для записи 3D десктопа эта программа определнно лучше всех рассмотренных выше.
Если вам больше по душе программы с GUI интерфейсом, то можно установить gtk-RecordMyDesktop - .deb и исходники.


Xvidcap

Программа доступна в исходных кодах и в виде .deb пакета. Если у вас [K]Ubuntu версии 6.10 или выше, програма должна стать без проблем. Также не должно быть проблем и в Debian-testing. Пользователям других дистрибутивов скорей всего придется ставить из исходников. В процессе кодирования видео программа широко использует FFMPEG. Поэтому для нормальной работы последний должен быть установлен в системе вместе с требуемыми библиотеками.

Запустить программу можно набрав xvidcap& в терминале. В левом верхнем углу рабочего стола появится следующее окошко:





Для настройки программы нужно кликнуть правой кнопкой мыши по названию файла и пройти в пункn меню "Параметры":

Как видно из рисунка, программа не скупится на настройки. Можно выбрать различные аудио и видео кодеки, качество картинки, количество кадров в секунду.... Записываемую область экрана можно задать с помощью инструмента "Select rectangular area to capture" (ручка с зеленым колпачком). Закончив все настройки и сохранив изменения можно приступить и к записи. Для этого нужно нажать на красную кнопку. Для завершения записи нажмите квадратик.

Помимо настроек, доступных в главном окне программы, параметры "съемки" можно задавать и при старте программы. Вот как выглядит задание снять весь экран, без аудио сопровождения в файл test.mpeg.

$ xvidcap --audio no --cap_geometry 1280x1024[+0+0] --file test.mpeg

И скриншот снятый с этого видео:



Как видно качество тоже на уровне. Единственный недостаток - присутствие окна программы на экране во время "съемки". Бороться с этим можно по разному. Например можно запустить программу на съемку и свернуть, а при выключении развернуть. Потом начало и конец обрезать.

pyvnc2swf

Это скрипт, написанный на Python, который записывает рабочий стол через протокол vnc и сохраняет в флеш файл .swf. Перед установкой программы установите следующие пакеты x11vnc,python-tk и python-pygame. В Ubuntu:
$sudo apt-get install x11vnc
$sudo apt-get install python-tk
$sudo apt-get install python-pygame
Если все установилось, то можно приступить и к самой программе. Для этого скачайте архив отсюда, распакуйте:

$tar -xzvf pyvnc2swf-0.9.1.tar.gz

и зайдите в созданный каталог:

$ cd pyvnc2swf-0.9.1

Теперь откройте новый терминал (или новую вкладку(окно) теринала) и запустите там x11vnc:

$ x11vnc
вернитесь к предыдущему терминалу и запустите следующее:

$ ./vnc2swf.py

Должно появиться окошко программы:



Для записи нажмите кнопку Start. Записав, нажмите кнопку Stop, проследуйте в пункт меню File -> Save As и сохраните записанную сессию. Для просмотра скринкаста можно воспользоваться обычным браузером. Если говорить о качестве, то динамические сюжеты (игра с Beryl) отображаются плохо. Изображение явно притормаживает. Зато статические моменты отображает очень хорошо.

Wink

Загрузить программу можно отсюда.

Распаковываем скачанный архив:

$ tar -xzvf wink15.tar.gz

Запускаем инсталлер:

$ ./installer.sh

Как работать с программой можно почитать здесь. Я сам не пробовал, так как версии для 64-битных систем я не нашел.

Как видим, программ для съемки рабочего стола в Linux много, и выбор за вами, какую из них использовать. Мне больше нравятся те, которые сохраняют результат в видео файл, а не gif ил swf. Поэтому, если возникнет острое желание в создании скринкаста, то я пожалуй воспользуюсь программой recordmydesktop или xvidcap.

Ниже я привожу дополнительные источники, где можно подробней ознакомиться с этими программами:

Screencast Guide: Capure Your Linux Desktop on Video!
Make a Movie of Your Linux Desktop
Пособие по видеопособиям
create screencast using xvidcap
HOW TO: Record Videos Of Your Desktop
Screencasting with Linux
Creating training movies with VNC2SWF

11 коммент.:

ceval комментирует...

из всех программ пользывался только xvidcap - меня вполне устроила.
Спасиба хороший обзор, вот только бы немного раньше когда у меня возник этот вопрос, а так почитать для общего образования полезно

virens комментирует...

Потрясающая статья! Вот, оказывается, как много можно выудить из новых репозиториев... буду обновляться.
Под сарж этого великолепия много меньше...

Большое спасибо за пост, очень информативно!

serhiy cherevko комментирует...

вот только бы немного раньше когда у меня возник этот вопрос Всегда оно так, не во вовремя :). Может другие не такие быстрые как Вы:).
как много можно выудить из новых репозиториев...
Ага. Я уже подумываю переходить на Kubuntu 7.04. 6.06 по поводу новинок подтормаживает. Ставить все из исходников со всеми зависимостями надоет уже.

savagex комментирует...

Пробовал Истанбул, оно конечно скринкастит, но сделать нормальный туториал со скринкастом консоли сделать не получилось - либо файл слишком большой, либо буквы слишком маленькие :)

Andrey комментирует...

Спасибо, неплохой обзор. Не знал, что так много утилит существует.

ceval комментирует...

Немного оффтоп - с понедельника под 7.04 сижу - хоть и альфа но пака все супер

serhiy cherevko комментирует...

Подожду выхода. Осталось не так уж и много. Только вот незадача, сносить работающий дистрибутив как-то не охота, а обновлять с 6.06 до 7.04 не думаю, что пройдет все гладко. Хотя можно попробовать, если все сломается, будет причина ставить новую ось :).

Andrey комментирует...

Зачем устанавливать все заново?
Загрузиться с любого LiveCD, примонтировать системный раздел, запаковать все. Теперь можно ставить все, что угодно - всегда будет возможность восстановить систему из архива.

fk_ комментирует...

Хороший обзор. Пробовал xvidcap но на моём старом компьтере при попытке заснять эффекты берила (например кубик) успевает снять только 2 фпс в секунду =(

serhiy комментирует...

А другие программы не пробовали? У меня например компьютер достаточно мощный, но при сохранение и воспроизведении мегабайтовых гифок все тормозило.

t.t комментирует...

Раз уж вы в каком-то месте дали ссылку на пакет из дебиановского репозитария, то почему бы не дать в остальных? В дебиане есть пакетами всё упомянутое кроме pyvnc2swf. Кроме того, к recordmydesktop существует ещё одна "морда" -- krecordmydesktop; также доступна в репозитарии. Ссылки на пакеты сам искать не буду, а вот sources.list скинуть могу:

t:~$ egrep -v '(^$|^#)' /etc/apt/sources.list
deb ftp://ftp.fr.debian.org/debian sarge main contrib non-free
deb ftp://ftp.fr.debian.org/debian-non-US sarge/non-US main contrib non-free
deb ftp://ftp.fr.debian.org/debian stable main contrib non-free
deb ftp://ftp.fr.debian.org/debian-non-US stable/non-US main contrib non-free
deb ftp://ftp.fr.debian.org/debian proposed-updates main contrib non-free
deb ftp://ftp.fr.debian.org/debian testing main contrib non-free
deb ftp://ftp.fr.debian.org/debian testing-proposed-updates main contrib non-free
deb ftp://ftp.fr.debian.org/debian unstable main contrib non-free
deb ftp://ftp.fr.debian.org/debian experimental main contrib non-free
deb http://security.debian.org/ etch/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb http://www.debian-multimedia.org testing main
deb http://www.debian-multimedia.org sid main
deb http://www.debian-multimedia.org experimental main
deb http://deb.opera.com/opera/ testing non-free
deb http://download.skype.com/linux/repos/debian/ stable non-free