29 Ноя

Записываем видео с дисплея в Linux

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

Для записи нам понадобится программа recordmydesktop, которая сегодня есть в любом репозитории linux-дистрибутива. Но поскольку эта программа записывает поток в формат *.ogv, который тот же ютьюб не понимает, его необходимо сконвертировать во что-то более популярное. Для этого я люблю использовать mencoder, который тоже есть везде.

И так. Если необходимо записатьсодержимое всей области экрана, то достаточно просто набрать в консоли recordmydesktop и все. По завершении можно просто нажать Ctrl+C, все остальное сделает сама программа.
Но чаще надо записать содержимое не всей области экрана, а лишь конкретное окно. Разработчики recordmydesktop рекомендуют это окно помещать в самый верхний левый угол экрана и в параметрах передавать ширину и длину записываемой области. Для меня это крайне неудобно и вообще звучит бредово. Поэтому я предлагаю поступать иначе.

Открываем окно, содержимое которого необходимо будет записывать. И смотрим его идентификатор в системе. Смотреть можно таким образом:

xwininfo | grep «Window id:»|sed -e «s/xwininfo\:\ Window id:\ // ;s/\ .*//»

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

recordmydesktop -windowid=0x360001e

Или сразу

recordmydesktop -windowid $(xwininfo |grep «Window id:»|sed -e «s/xwininfo\:\ Window id:\ // ;s/\ .*//» )

Для конвертации можно использовать

mencoder out.ogv -ovc xvid -xvidencopts pass=1 -o output.avi

09 Фев

Смена цветовой схемы в зависимости от времени суток в VIM

Когда используешь вим в дневное и вечернее время, хочется что бы цветовая схема сама менялась в зависимости от этого. Днём комфортно работать в светлой вроде pyte, вечером же хочется более тёмных цветов, и тут уже на помощь приходит rdark. Для осуществления таких экзотических желаний достаточно добавить в ~/.(g)vimrc следующий простой код:

" Change color scheme by day time
let dayBegin = 10
let dayScheme = "pyte"
let nightBegin = 19
let nightScheme = "rdark"
let currentTime = str2nr(strftime("%H"))

if currentTime < nightBegin && currentTime < dayBegin
    silent execute "colorscheme " . nightScheme
elseif currentTime > nightBegin && currentTime > dayBegin
    silent execute "colorscheme " . nightScheme
else
    silent execute "colorscheme " . dayScheme
endif

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

09 Фев

Режем видео в Linux

Была у меня видяха одна, которую надо было разрезать на 2 части (просто вторая часть была не нужна).
Покажу на примере, как я mencoder’ом проделал сабж.

Видеофайл — video.wmv.
Нам надо знать время длительности первого куска, до которого мы будем резать.

$ mencoder vode.wmv -endpos 33.920 -o video_part1.avi -oac copy -ovc copy

Можно резать и исходя из требуемых размеров конечного файла. Тогда необходимо узнать временную позицию, соответствующую требуемому объему. Допустим, нам необходима первая часть файла, которая будет весить 20Мб. Сделать это можно так:

$ mencoder -ovc copy -oac copy -endpos 20mb -o /dev/null video.wmv

В итоге смотрим последнюю запись вывода, к примеру:

Video stream: 1880.602 kbit/s (235075 B/s) size: 8678976 bytes 36.920 secs 923 frames

Вот в конце мы и видим точное время — 36.920 secs