Сценарият е следния: Ubuntu машина, стандартен потребител (ivanatora), който има нужда да свърши няколко неща изискващи root достъп. Вместо потребителя да пише sudo преди всяка команда, той си съкращава писането с:
$ sudo -i
[sudo] password for ivanatora:
#
И минава в интерактивен root-ски логин. От този логин той излиза с `exit` или CTRL+D. До тук всичко е ясно.
Проблем: root логинът се захвърля на някоя конзола измежду всички останали и се забравя там. На повечето системи, които съм виждал този логин би останал отворен вечно, докато не се затвори ръчно.
Решение: следното се добавя в /root/.profile
if [ $SUDO_USER ]; then
export TMOUT=1200
fi
Обяснение: Опцията "-i" симулира първоначален логин, като се изпълняват и съответните файлове ~/.profile, ~/.bash_profile и т.н. на новия акаунт. TMOUT е променлива на средата, която казва колко секунди след последния вход ще се прекрати процеса. Ако се сложи TMOUT=0 автоматичното прекратяване ще се забрани. SUDO_USER е променлива на средата показваща кой е потребителят изпълнил sudo. На някои системи тази променлива не съществува и там трябва да се ползва "who am i" (с интервалите).
Взех си евтина китайска батерия от eBay, която държи 3 пъти повече от оригиналната. Естествено електрониката въобще не се разбира с лаптопа и единствената информация, която може да бъде извлечена е процента на заряд. Брой презареждания, температури, напрежение на елементите, тоци - абсурд. Такъв абсурд, че даже и светодиодът за батерия не работи - има само едно - зелено състояние. По принцип с оригиналната батерия като падне под 30% зеленото се сменя с оранжево, а като падне под 20% оранжеовото почва да мига. Ама те и процентите на новата са едни проценти... на 20% гасне лаптопа.
Липсата на някаква осезаема индикация за батерията ми бърка в здравето. За това си написах едно просто скриптче, което взима процента на батерията и при ниски или критични нива примигва осветителния светодиод и издава звук. Скриптът е Thinkpad специфичен и няма да работи на други машини.
Става много бързо и лесно.
Използван хардуер:
- Canon SX120IS (става всеки CHDK-съвместим фотоапарат)
Използван софтуер:
- CHDK
- intervalometer script - без значение точно кой
- enfuse - за сливане на различните експозиции и получаване на HDR
- PHP - долу ще намерите бърз скрипт за сливане на много на брой кадри
- mencoder - за сливане на HDR-ите във финално клипче
Какво е timelapse?
Това е кинематографска техника при която честотата на заснемане на кадрите е по-малка от честотата на възпроизвеждането им. Примерно ако една сцена се снима всяка секунда и после клипа се пусне на 30 fps резултатът ще бъде увеличаване на скоростта 30 пъти.
Какво е HDR?
Ако се абстрахираме от математиката и засуканите термини, можем разговорно да кажем че това е техника за получаване на равномерно осветен кадър (с изчистени преекспонирани и недоекспонирани области). Технологията стандартно използва три кадъра с различна експозиция (-2, 0, +2), които слива в един - изчистен.
Какво става като комбинираме HDR с timelapse?
Красиви клипчета
Как се прави HDR timelapse с CHDK?
CHDK не прави HDR - това се прави после от софтуера, който слива трите снимки на сцената. CHDK прави "bracketing" - автоматичното заснемане на трите кадъра с различна експозиция. Следвайте следните стъпки:
1. В менюто на CHDK изберете "Extra Photo Operations" -> "Bracketing in Continuous Mode". Там изберете "Tv bracketing" = 2EV, "Av bracketing" = OFF, "Bracketing type" = "+/-"
2. В менюто на фотоапарата изберете режим "Continuous Mode".
3. В менюто за самоснимачка изберете "Custom mode" със следните параметри: "Delay" = 0s, "Shots" = 3
От тук нататък пуснете кой да е intervalometer скрипт с параметри по избор. Какво ще се случи когато скриптът даде команда за снимане? Ще се задейства самоснимачката, която ще направи 3 последователни снимки с различна експозиция.
В края на сесията след няколко минути/часа ще имате X броя сцени с Х*3 броя изображения. Прехвърляте ги на компютъра и със следния скрипт получавате HDR-ите:
От тук нататък имате всяка сцена на HDR с име от типа hdr_shot_001.jpg. От тези трябва да се получи клипче.
Това става с mencoder:
mencoder mf://*.jpg -mf w=640:h=480:fps=15:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
Тук 640 и 480 са размерите на снимките ви. Може да си поиграете с параметъра fps за да получите по-бързи или по-бавни клипчета.
Настоящата статия не претендира за изчерпаемост на темата, нито за професионализъм. Но пък претендира за най-лесния и бърз начин за създаване на HDR timelapse