LinuxScreencasting

From Wiki4Intranet
Revision as of 16:53, 21 September 2012 by StasFomin (Talk | contribs)

Jump to: navigation, search


Итак, для Windows из доступно-надежного предлагается запись экрана через ConferenceRecorder или Screen2Log, но как записывать экран в Linux? Причем, чтобы:

  • В любом из сонма дистрибутивов
  • С минимальной инсталляцией
  • Без помех демонстрации (не тормозит!)
  • Без рассинхронизации с истинным временем, чтобы потом, можно было синхронизовать экран с записями камер и другими скринкастами, используя, например SeminarAssembler.
  • Без настроек, но чтобы было понятно, когда это записано (опять таки важно для синхронизации).
  • Ну и чтобы быстро и надежно — на конференциях обычно спохватываются непосредственно за минуту до выступления докладчика, пришедшего со своим Linux-ноутбуком, и при этом ни разу не запускавшим скринкастинг.

Если для Windows идеалом является portable-программа, запускающаяся без инсталляций, развертывания в Program Files, кучи настроек… то Linux-way несколько другой. Надо использовать самые стандартные, всегда установленные (или легко устанавливающиеся утилиты), и свертывать их в работающий поток длинным one-liner-ом!

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

Ключевой утилитой, будет конечно творение безумного гениального Фабриса БеллараFFmpeg. Тут я должен был бы привести магическую строчку настроенную на самые правильные параметры, но есть нюансы.

К сожалению, из-за аспектов копирастии, сборки ffmpeg-а под разными дистрибутивами (например, под ортодоксальным GNU Debian) могут не включать различные пакующие кодеки, защищенные правами и патентами, и в частности, самый оптимальный вариант — lossless h264. Поэтому я приведу несколько версий.

Вроде достаточно прилично экран можно записать с помощью кодека FlashScreen, в flv-формат (индексы он хранит в начале файла, и этом может быть плюсом при внезапном падении записи):

nice -n 19 ffmpeg  -f x11grab -r 8 -s $(xwininfo -root | grep 'geometry' | awk '{print $2;}') -i :0.0 -an -vcodec flashsv -vb 1000 -vsync 1 -y $(date "+%F-%H-%M-%S").flv

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

Чтобы сделать из записанного yyyy-mm-dd-hh-mi-ss.flv<tt> «vanilla» AVI для последующего монтажа с помощью SeminarAssembler, достаточно запустить SeminarAssembler так:

 sa b yyyy-mm-dd-hh-mi-ss.flv$lossless.avi

Ну а далее, например, Category:Курс «Видео на конвеере» или чем вы привыкли пользоваться.

Но если взлетит, надежней и лучше было бы так:

nice -n 19 ffmpeg  -f x11grab -r 8 -s $(xwininfo -root | grep 'geometry' | awk '{print $2;}') -i :0.0 -an -vcodec libx264 -preset ultrafast_lossless -vsync 1 -y $(date "+%F-%H-%M-%S").flv

Конечно, можно еще включить запись аудио, но тут есть тонкость, какую аудиосистему (alsa/pulse) использовать, и однозначно работающий script-fu я пока предложить не могу.