Archive for the ‘tech’ Category

Компресия на видео

Tuesday, December 25th, 2012

От както си хакнах Magic Lantern на фотоапарата, вече мога да снимам и видео. Не съм никакъв видео маниак с продуцентски наклонности, но от време навреме е хубаво да можеш да запишеш 1-2 минути.

Имаше два основни проблема за решаване:
1. Крайните видео файлове са огромни по размери за скромните ми хард дискове. Примерно 1 минута VGA видео – 160MB. А ако се снима на FULL HD, размерите стават още по-потресаващи.
2. Апарата няма хардуерен микрофон и записва без звук. По принцип въобще няма функцията “видео”, но благодарение на софтуерните ентусиасти – снима 🙂

Първия проблем ми беше особено належащ, защото наистина нямам никакво излишно място, а и щайгата ми въобще няма претенция да е станция за видео обработка. Така че ми трябваше софтуер, който да върви на Linux, да може да се batch-ва и да изкарва качествени смачкани видеа.

Естествено първо пробвах с mencoder, но така и не можах да изкарам качествено видео. Артефактите от компресията са едно на ръка, допълнително всичко що се мърда беше замацано и блурнато… Пробвах какви ли не кодеци и какви ли не компресии.
После пробвах директен ъплоуд в YouTube и да си го оправят както знаят 🙂 Една готина тяхна опция е “Reduce camera shake” за клипчета снимани от ръка. За съжаление YouTube го надроби същото като mencoder – грозотия.

Правилния начин беше компресия с H264 и ffmpeg.
Тук също имаше препъващи камъни. Оказа се че на древното ми Убунту 10.04 има ffmpeg, но супер стара версия без H264. Почнах да си псувам тихичко и да премислям за N-ти път алтернативата за ъпгрейд, когато ей така на майтап си свалих сорса на ffmpeg и пуснах да се компилира. Очаквах да изреве че всяка нужна библиотека е с прекалено стара версия в системата ми, но не! За 10 минути имах работещ нов bleeding edge ffmpeg.
H264 се сваля и се инсталира отделно. В това HOWTO е описано как става.
Веднъж като имаме работещ ffmpeg+H264, останалото е лесно:

ffmpeg -i MVI_2355.MOV -acodec aac -vcodec h264 out.mp4

В случая може би би било по-добре да не се задава никакъв аудио кодек, понеже видеото няма звук.

Крайния резултат в размера на файла е покъртителен:

-rw-rw-rw- 1 ivanatora ivanatora 163M 2012-12-23 20:15 MVI_2355.MOV
-rw-r--r-- 1 ivanatora ivanatora  22M 2012-12-24 12:24 out.mp4

Около 8 пъти по-малък размер. Видео качеството е същото като на оригинала – с минимална загуба.

Втория проблем въобще не ми беше приоритет, но така и така ме беше хванало настроение, та разучих какви са опциите.
По форумите казват че можело да се използва външен микрофон, който да се включи в слота за дистанционното и някак си да се записва от там.
Вместо това реших да пробвам да запиша аудиото с телефона и после някак си да ги напасна с видеото.

За Android има доста приложения диктофони или voice recorders. Пробвах поне 3-4 безплатни от маркета, но все нещо не ми харесваха. Или бяха ограничени до много къси записи, или записваха в някакви незнайни формати, или качеството на звука беше ужасно. Накрая се спрях на дефаултния voice recorder – записва в AMR, няма никакви ограничения и звукът е доста приличен.

Недостатък на целия метод е че трябва едновременно да пусна записа на аудиото и видеото, и после едновременно да ги спра. Е, обект на следващото ТНТМ ще е монтиране на аудио с произволна дължина и начало 🙂

След като имаме крайния AMR с аудиото, много лесно го преобразуваме в какъвто и да е формат:

ffmpeg -i audio.amr audio.wav

И също така лесно го добавяме във видеото:

ffmpeg -i audio.wav -i out.mp4 -strict -2 -ar 22050 test.mp4

В резултат вече имам FULL HD capable машина която с малко час по труд и творчество може да записва и аудио.

Canon Powershot A620 – ретро ревю

Wednesday, October 17th, 2012

Целта на тази статия е да даде един потребителски поглед върху този модел. Няма да правя подробни изтискващи ревюта, защото такива в интернет има много. Ще се концентрирам върху тези неща които ми правят впечатление.

Ключови моменти:
– модел от 2005г.
– 7.1MP сензор размер 1/1.8″ (crop factor 4.84)
– обектив към 35мм еквивалент – 35-140мм, светлосила F/2.8-4.1, брой елементи – най-вероятно 2
– DIGIC 2 процесор
– 4 АА батерии
– SD/MMC карта за съхранение
– въртящ се 2″ дисплей

Плюсове
– големина – джобен формат, не изисква отделни чанти, калъфи и т.н.
– сравнително голям сензор за сапунерка
– въртящ се дисплей – вече нямате нужда от кенефно огледало за да се снимате сами 😛
– CHDK – 3-rd party софтуерен пакет, който добавя към 173623 опции, включително – raw shooting, auto exposure bracketing, scripting, custom video bitrates и други гъзарии неприсъщи за апарати от този клас
– цена – в момента към края на 2012-та се намира на старо за 100-150лв
– напълно автоматично смятане на баланса на бялото според текущата ситуация. Познатото снимане на бял/сив кадър, човъркане из менютата, избиране на кадъра – всичко това са го направили да е автоматично с 1 опция. Дори не ви трябва чисто бял/сив кадър, само насочвате и то си смята баланса.
– безшумно снимане, муахахаха
– читав viewfinder, който е свързан с оптичното приближение. Образът не излиза през обектива, а през отделно прозорче и може да се ползва за кадриране ако не ви се вади дисплея.
– режим C, който е за бърз достъп до запаметени настройки
– ISO 50
– пълни ръчни настройки в режим М
– възможност за ръчен фокус

Минуси
– тежест – намира се в една такава никаква зона… Прекалено лек за някаква стабилност и прекалено тежък за да се носи неусетно.
– въртящ се дисплей – често вадя апарата за по една снимка, като се почва едно разгръщане на дисплея, снимане, връщане на дисплея… Не е добре да се оставя постоянно обърнат, тъй като няма защитно стъкло. Прах и отпечатъци се лепят за него като мухи на мед. Отпечатъците особено си личат на слънце.
– захват – отделението за батериите образува нещо като захвата на големите апарати – някои биха казали че изглежда удобно… но не и в такъв размер 🙂 Ако имате супер миниатюрни ръце, ще ви е удобно. Аз като го хвана и пръстите ми се кривят и удрят обектива при зуум.
– обективът не е особено широкоъгълен.
– не поддържа SDHC карти по никакъв начин. Ако имате голяма карта, просто ще каже “Memory card error” и няма да снима.
– минималната светлосила е F/8. Малкия размер на обектива не позволява по-затворени бленди. Това значи че няма начин да се направят дълги дневни експозиции (примерно на течаща вода за размазан ефект).
– шумно движение на обектива, което е стандартен минус за всякакви сапунерки.
– няма оптична стабилизация – забравете за скорости по-дълги от 1/80 от ръка
– образът във viewfinder-а е мек и замазан по краищата, няма диоптрична корекция и каквато и да е информация в него.
– нахални Tv и Av режими – ако сметне че зададената от вас скорост или бленда няма да доведат до коректна експозиция, ще ги промени.

Заключение
Canon Powershot A620 е една чудесна машинка за парите си. По някои функционалности напира да излезе от А-класата на Powershot-ите, които са известни като ширпотребата на Canon. CHDK дава възможност за доста интересни неща, които ги има в съвременните машинки (примерно hdr timelapse). Липсата на оптична стабилизация малко дразни, но пък тренира стабилна ръка 🙂

Скрол

Tuesday, May 31st, 2011

Повечето съвременни мишки имат два допълнителни бутона на колелцето на скрола, които се активират респективно при натискане колелото наляво и надясно. Не се виждат и в повечето случаи дори не знаете че са там, освен ако не си четете упътването на мишката 🙂
Logitech B110
Много лесно можем да вкараме тези екстри в употреба. xev ги разпознава като Mouse6 и Mouse7, така че веднага можем да ги сложим в .fluxbox/keys:

None Mouse6 : PrevWorkspace
None Mouse7 : NextWorkspace

Естествено функцията им може да е съвсем различна от смяна на работния десктоп, но това ми се струва най-правилно 🙂

HDR timelapse

Saturday, April 9th, 2011

Става много бързо и лесно.
Използван хардуер:
– 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-ите:

  1.  
  2. <?php
  3. $rDir = opendir(".");
  4. $aFileList = array();
  5. while( ($sFileName = readdir($rDir)) !== false){
  6.     if (!strstr($sFileName, "IMG")) continue;
  7.     $aFileList[] = $sFileName;
  8. }
  9. sort($aFileList);
  10. $aFileList = array_chunk($aFileList, 3);
  11. foreach ($aFileList as $iShotKey => $aFileGroup){
  12.     $sGroupList = join(" ", $aFileGroup);
  13.     $iShotKey = sprintf("%03d", $iShotKey);
  14.     print "Enfuse shot #$iShotKey…";
  15.     `enfuse $sGroupList -o hdr_shot_$iShotKey.jpg`;
  16.     print " done!\n";
  17. }
  18. print_r($aFileList);
  19. ?>
  20.  

От тук нататък имате всяка сцена на 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 🙂

И накрая резултата от едно пробно снимане:

Бюджетно GPS решение

Monday, May 31st, 2010

0. Какво очакваме от такова решение.
Не очаквам рутиране. Трябва да може да ми показва къде съм, гледка от птичи поглед. Да може да пази маршрути и тракове. Да ме насочва към контролни точки (waypoints). Трябва цялата система да е компактна и да се събира в джоб. Трябва да работи с телефона, който в момента имам (Sony Ericsson K800i), т.е. софтуера да е Java. Естествено, трябва да има карти (включително импорт от картинка) и възможност сам да си ги правя лесно.

1. Телефон (Java/Symbian)
Трябва ви какъвто и да е телефон с поддръжка на MIDP-2.0 и CLDC-1.1. Телефона ви трябва да има поне 500KB оперативана памет и доста повече за карти. В момента карта на регион с размери 3 на 3 км (Пловдив) с приближение от 11 до 18 заема 16МВ на телефона ми. Карта на цяла България с приближение от 8 до 13 заема 55МВ.

2. GPS приемник
Всякакъв приемник, който се свързва по Bluetooth е подходящ. Доста разпространен и евтин модел е Holux M-1000. Нов струва около 80лв, а моя го взех от Ebay за 20. Малък е (като кибритена кутия), събира се във всякакви джобове. Батерията му държи към 10+ часа (из нета пишат за 20+ часа) и приемането му е добро, дори когато сте в кола, влак и т.н. MTK чипсет. В комплекта има зарядно за кола и USB кабел, който може да се използва пак само за зареждане на батерията. Батерията е Nokia-съвместима, така че за под 10 лв може да си вземете втора от руския пазар. Скоростта не се дава много коректно – разлика от до 5 km/h е допустима във кола. Във влак, където няма неравномерни ускорения като че ли е малко по-точно. За пешеходци текущата скорост варира между 0-10 km/h и не може да се гледа. Но ако правите трак накрая може да видите средна аритметична скорост.
3. Софтуер
– MapNav – http://mapnav.spb.ru/site/download.php?list.3 – изисква регистрация (става бързо и безплатно) – това се инсталира на телефона ви.
– mobile map creator – http://mapnav.spb.ru/site/download.php?list.4 – също – това се инсталира на компютъра ви (дори работи с Wine)
– Ozi Explorer – http://www.oziexplorer.com/ – програмата струва $95, но който държи да си пиратства – има я из торентите. Програмата служи за калибриране на растерни карти и не е необходима, ако не мислите да правите това. Също се инсталира на компютъра (и пак работи с Wine)

MapNav
1. Features
– език на интерфейса – руски, английски, български и др.
– 18 нива на приближение, като на най-високото разделителната способност е около метър на пиксел.
– правене на трак, като слага точките по изминато разстояние, минало време или при промяна на посоката. Без проблеми прави трекове с 3000+ точки, като има опция за олекотяване да показва само последните 100 точки. Дава профили на на пътя по височина и по скорост. Траковете могат да се експортват/импортват в GPX, KML или Ozi формат.
– компас, който показва посоките релативно на посоката на движение.
– водене по маршрут или контролни точки – waypoints.
– заключване на клавиатурата
– затъмняване на екрана – върши добра работа за пестене на батерия
– смяна на картите по време на работа.
– използване на ваши карти (в MNO формат – правят се с mobile map creator, виж по-долу) или онлайн такива (ако имате мобилен интернет).
– спортен режим на засичане на обиколки – не съм го пробвал.
– в основния екран се показват картата, текущата позиция на нея, координати, скорост, надморска височина и др.
– слагане на измерителна скала върху картата
– ръчно задаване на път
– слагане на белязки, които после може да ползвате за waypoints или Points Of Interest
– импорт и експорт на трaкове, waypoints, маршрути и др. Поддържа GPX формат и няколко други.
– настройки за всичко, което можете да се сетите.
– правене на скрийншот
– описание на mapnav на английски – http://mapnav.spb.ru/site/page.php?15 и на руски – http://mapnav.spb.ru/site/page.php?10

Карти
1. Калибриране с Ozi
1.1. В Ozi Explorer (бих пуснал снимки, ако притежавах програмата)
File -> Load and Calibrate Map Image
Избиране на растерната карта.
Избиране Point 1 -> клик в единия ъгъл на картата; в дясно на Degrees & mins се попълват координатите на точката
Избиране Point 2 -> клик в друг ъгъл на картата; попълват се новите координати
Point 3 – по същия начин
Save -> избирате къде да бъде запазен .MAP файла – това е информацията за калибровката на картата и ще се използва в следващата стъпка.
1.2. В Mobile Map Creator
Горе трябва да е избран таба Convertor.
Кликате на първата иконка (текста на нея е нещо като Select map to convert).
mobilemapcreator-1
В нея зареждате .MAP файла, който имате от Ozi-то. Внимание: ако сте свалили МАР файл от нета, отворете го и оправете пътя до растерното изображение да сочи правилно към изображението което имате (C:\Ozi\superdupermap.map при един ще е D:\Documents And Settings\usr\My Documents\plovdiv.map при друг). Пътя до изображението е на третия ред във МАР файла, който се отваря като текстов с Notepad. Ако сам сте си направил МАР файла, няма нужда от подобна манипулация.
Зареждате МАР файла и избирате къде да запазите крайните карти. Ще получите два файла с разширения MNM и MNO. Този с разширението MNМ се използва като вътрешна карта, която може да вградите в самата програма MapNav, но авторите й препоръчват да не се прави така. Използвайте MNO файла и си работете с външна карта.
2. Сваляне на уеб карти (Virtual Earth)
Горе трябва да е избран таба Map.
mobilemapcreator-2
Първия плъзгач е за zoom level-a на избраната карта. Картата източник се избира от падащото меню. В момента са налични VirtualEarth, Google, OSM и др. Могат да се добавят още с директно редактиране на maps.ini. В прозореца с картата можете да влачите докато намерите областта, която ви интересува. Кликате на Set to map и избирате с мишката района. Трябва да се появи с инвертиран цвят. Под този бутон се намира Map Zoom – стойността вътре показва какво приближение ще имате в получената карта накрая. С бутона “+” добавяте селекцията в компилацията. Внимание: изберете всичките приближения, които искате да имате после в MapNav-a! Примерно ако искате да имате от ниво 11 до ниво 13, задавате ниво 11, кликате “+”, задавате ниво 12, кликате “+”, задавате ниво 13, кликате “+”.
mobilemapcreator-3
Цифрите ви показват колко плочки (tiles) ще се свалят от нета. Това е и горе долу показател за размера на картата накрая. Когато сте доволни от селекцията, кликате Compile Map и избирате къде да се запазят двете карти MNO и MNM.

Инструменти за визуализиране на трекове
1. Онлайн
http://www.everytrail.com/
– може да ъплоудвате тракове в GPX формат – public (всеки може да гледа трака) и private (само вие можете да го гледате) режими
– дава профил на терена по скорост и по височина
– ъплоудване на снимки и геотагване
– пътепис
– търсене и браузване на тракове
2. Десктоп
– Google Earth – да се провери какво става там. Вероятно трябва да работи с KML.