Difference between revisions of "LinuxScreencasting"
Line 8: | Line 8: | ||
* Без рассинхронизации с истинным временем, чтобы потом, можно было синхронизовать экран с записями камер и другими скринкастами, используя, например [[SeminarAssembler]]. | * Без рассинхронизации с истинным временем, чтобы потом, можно было синхронизовать экран с записями камер и другими скринкастами, используя, например [[SeminarAssembler]]. | ||
* Без настроек, но чтобы было понятно, когда это записано (опять таки важно для синхронизации). | * Без настроек, но чтобы было понятно, когда это записано (опять таки важно для синхронизации). | ||
+ | * Ну и чтобы быстро и надежно — на конференциях обычно спохватываются непосредственно за минуту до выступления докладчика, пришедшего со своим Linux-ноутбуком. | ||
Если для Windows идеалом является portable-программа, запускающаяся без инсталляций, развертывания в Program Files, кучи настроек… то Linux-way несколько другой. | Если для Windows идеалом является portable-программа, запускающаяся без инсталляций, развертывания в Program Files, кучи настроек… то Linux-way несколько другой. |
Revision as of 16:53, 21 September 2012
Итак, для 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 я пока предложить не могу.