Program GARICAM přehrává data z kamery CEL-TEC N5 a paralelně zobrazuje trasu na mapě. Používá k tomu službu Google Maps, je tedy nutné připojení na internet. Program je napsán v PHP a v JavaScriptu a je vytvořen pro operační systém Linux. V jiných systémech zřejmě pracovat nebude, protože vyžaduje komponenty, které jsou standardně dostupné v distribucích Linuxu.
Software je zatím dostupný pouze v angličtině a češtině..
Aktuální verze programu je 1.1.
Název GARICAM (v dévanágarí psáno गाड़ीकैम) pochází z hindských slov गाड़ी का कैमरा, což znamená kamera v automobilu.
Program přehrává videa z kamery CEL-TEC N5 a současně zobrazuje trasu na mapě s využitím dat z modulu GPS. Lze přehrávat jak jednotlivé soubory, tak sekvence. Vzhledem k zobrazovaní trasy je vhodné přehrávat výhradně souvislé sekvence souborů. Synchronizace videa se zobrazením na mapě zůstává zachována i v případě, kdy rychle převíjíte video či zvolíte jiný soubor ze seznamu vybraných videí. Kliknutím na trasu na mapě je video převinuto na odpovídající místo. Pomocí tlačítka pod videem lze sejmout fotografii v plném rozlišení videa.
Verze 1.1 přináší dva nové ovládací prvky zobrazené pod přehrávačem.
Posuvná lišta zobrazuje časový průběh přehrávání souhrnně za všechna videa v seznamu. Celková doba jízdy je uvedena vpravo od lišty, aktuální čas je zobrazen vlevo od lišty. Při posunování pomocí myši je průběžně ukazován zvolený časový údaj, což usnadní výběr konkrétního místa cesty, kam se chceme posunout. Přehrávač pak zvolí správný soubor k přehrání a poloha na mapě bude synchronizována. Tato funkce vyžaduje prohlížeč s podporou HTML5.
Druhým novým ovládacím prvkem je tlačítko Jeď. Pokud jej stisknete v době, kdy je vozidlo v klidu, přehrávač se posune do nejbližšího okamžiku, kdy se vozidlo rozjede. Údaje o rychlosti vozidla jsou zaznamenány v údajích z GPS. Tlačítko edy může správně fungovat pouze v případě, že jsou data z GPS dostupná.
Současně se vykreslováním trasy je pod mapou zobrazována okamžitá rychlost a směr jízdy. Tyto hodnoty jsou odečteny z údajů získaných z modulu GPS. Pomocí funkcí rozhraní Google Maps je počítána ujetá vzdálenost a průměrná rychlost jako podíl vzdálenosti a času.
Podívejte se na demonstraci programu v níže uvedeném videu. Vysvětlivky jsou uvedeny v anglických a českých titulcích (zapněte si je pomocí ikony v pravém dolním rohu videa). Video předvádí verzi 1.0beta.
Safari pro iPad nezobrazuje titulky, musíte použít přímo aplikaci YouTube pro iPad. Nepodařilo se mi zobrazit titulky v aplikaci YouTube pro Android, ale Chrome pro Android titulky zobrazí.
Program pro svoji funkci vyžaduje další komponenty, které je nutno získat a instalovat samostatně. Postup je uveden v následujících kapitolách.
5.1. | ffmpeg |
5.2. | jwplayer |
5.3. | Google Maps API key |
5.4. | Web server |
ffmpeg
je program pro práci s videem z příkazového řádku. Zde je využíván k tomu, aby
z videa vytáhl do textového souboru titulky obsahující záznamy z modulu GPS ve formátu
GPRMC. Program nemusí být instalován se základní distribucí, ale pravděpodobě bude dostupný
jako instalovatelný balíček. V nejhorším případě si jej budete muset zkompilovat sami ze
zdrojového kódu.
jwplayer
je přehrávač videa napsaný v JavaScriptu. Poskytuje funkce potřebné pro
naprogramování synchronizace videa s mapou. získáte jej zdarma na
www.jwplayer.com/.
Zobrazení trasy na mapě je realizováno pomocí rozhraní Google Maps. Rozhraní vyžaduje autorizaci uživatelským klíčem. Zdarma je povoleno 25 tisíc přístupů denně, což nelze fyzicky překročit při osobním používání. Kdybych však poskytl svůj klíč, mohli by ostatní uživatelé překročit můj limit a já bych musel jejich přístupy zaplatit. Proto musí mít každý svůj klíč. Návod, jak získat klíč najdete v tomto tutorialu. Potřebujete tedy účet u společnosti Google.
Pokud si zvolíte Edit allowed referers, uvědomte si, že referer
není veřejná IP adresa serveru, ale jeho jméno, které používáte k jeho přístupu. Pokud
tedy použijete adresu ve tvaru http://localhost/garicam/
, referer bude
localhost
. Takové omezení vůbec nezvýší ochranu před zneužitím klíče,
protože každý počítač má jméno localhost
s adresou 127.0.0.1 nebo ::1.
Možností, jak obejít povolený referer, je více. Nejlepší ochranou je použití protokolu
https a přístupu se jménem a heslem.
Jak již bylo uvedeno, jwplayer
nedokáže přehrát video načítané
protokolem file:
, ale je nutno použít web server. Postačuje libovolný web
server s podporou PHP. Autor programu zvolil Apache čistě proto, že jej řadu let používá i pro jiné aplikace. Jeho instalace
v Linuxu je snadná, konfigurace pro použití programu
Garicam je dodávána společně s programem. Stačí doplnit správné adresáře, soubor
nakopírovat do adresáře /etc/httpd/conf.d
a restartovat Apache. Popis tohoto
souboru bude uveden později.
Distribuce obsahuje dva adresáře. V adresáři garicam
jsou soubory,
které je nutno nainstalovat na web server. Adresář tools
obsahuje pomocné
nástroje a vzory konfiguračních souborů.
Instalace souborů na server je jednoduchá. Celý adresář garicam
se zkopíruje do adresáře, odkud web server načítá soubory. Apache má své soubory v adresáři /var/www/html
, ale toto umístění může být v některých distribucích
odlišné. Soubory tedy vložíme do libovolného podadresáře.
V tomto adresáři je nutno vytvořit podadresář jwplayer
a do něj
nakopírovat soubory javascriptového přehrávače videí. Jedná se o tyto soubory z distribuce
programu
jwplayer: jwplayer.js
, jwplayer.flash.js
,
jwplayer.html5.js
.
Všechny soubory musí být čitelné uživatelem, pod nímž běží web server. Nejsnadnější je zpřístupnit soubory všem. Dosáhneme to následujícími příkazy (předpokládáme defaultní umístění kořenového dokumentního adresáře pro Apache):
cd /var/www/html chmod +rx garicam garicam/jwplayer chmod +r --recursive garicam/* |
Jak již bylo napsáno, videa musí být načítána prostřednictvím web serveru. Musí tedy být umístěna v adresáři, který je pro web server přístupný. Záznamy z kamery však obsahují čas a polohu, což jsou informace, které uživatel nemusí chtít sdílet. Program proto vyžaduje, aby adresář s videy byl podadresářem programového adresáře. To může ztěžovat vkládání souborů. Je tedy možno vytvořit symbolický link na adresář umístěný např. v domovském adresáři:
cd /var/www/garicam ln -s ~/path/to/camera/files videos |
Později nastavíme přístupová práva tak, aby obsah adresáře nešlo na webu prohlížet.
Unixové systémy používají pro dočasné soubory adresář /tmp
nebo
/var/tmp
. Odkaz na tento adresář bývá v proměnné prostředí
TMPDIR
. Tento adresář má však jednu zvláštnost. Z bezpečnostních důvodů je
jméno souboru, který je v něm vytvořen, upraveno tak, že má k němu přístup jen proces,
který jej vytvořil. Program Garicam však vyžaduje, aby soubor, vytvořený jedním procesem,
mohl být přečten a smazán jiným procesem. Musíme si proto vytvořit jiný adresář. Program
defaultně očekává /GaricamTMP
. Vlastníkem adresáře musí být uživatel, pod
nímž běží web server.
Konfigurace programu Garicam se nastavuje ve dvou souborech. Oba jsou v adresáři garicam
, který jste nakopírovali do dokumentního stromu web serveru.
V souboru key.php
nahraďte text YOUR_KEY_HERE
skutečným klíčem, který jste získali podle instrukcí v sekci
Google Maps API key.
Soubor incl_all.php
umožňuje nastavení řady parametrů, ale pouze
některé z nich byste měli měnit.
Základní konfigurace je nastavena v souboru garicam.conf
, který
najdete v adresáři tools
. Zde je jeho obsah:
<Location /garicam> Options FolloSymLinks SSLRequireSSL Include auth/auth.conf AuthType Basic AuthName "Garicam" Require ... # user or group </Location> |
Location
určuje, kde je adresář s programem uložen, tedy odkud
jej web server bude načítat. Příkaz Options
je jedinný povinný. Hodnota
FolloSymLinks
povoluje následování symbolických linků i mimo dokumentní strom
web serveru. Důležité je nezapnout Indexes
. Protože se po síti budou přenášet
důvěrné informace, je vhodné vyžadovat šifrování parametrem SSLRequireSSL
.
Protokol https
lze použít i bez tohoto parametru, ale tímto způsobem je
použití šifrování vynuceno.
Zbývající řádky slouží k nastavení přístupu pomocí uživatelského jména a hesla. Předpokládejme, že ve složitější konfiguraci
budeme stejné soubory s uživatelskými
jmény a hesly používat pro přístup do více adresářů. V každém takovém adresáři ak načteme soubor auth/auth.conf
,
ale výsledek je stejný, jako kdyby obsah souboru byl uveden přímo zde. Všimněte si, že
jeho jméno je relativní k adresáři /etc/httpd
, ne k umístění souboru
garicam.conf
. Cesty k souborům s hesly a definicemi skupin jsou absolutní.
V souboru definujícím skupiny začíná každý řádek jménem skupiny a za dvojtečkou následuje seznam uživatelů oddělených mezerami. Uživatel může být členem více skupin, jako např. v tomto příkladu:
family:myself mywife myson mybrother mygirlfriend friends:John Jim Jack Jane Judy Jessie beer:myself John Jim Tom Jerry Jameson |
Parameter AuthName
specifikuje text, který bude zobrazen v přihlašovacím dialogu. Parametr Require
určuje, kdo bude mít k danému
adresáři přístup. K dispozici jsou tři možnosti:
family
.
Soubor uživatelských jmen a hesel se vytváří a upravuje programem
htpasswd
. Na každém řádku je uživatelské jméno následované dvojtečkou a hashí
hesla. Soubor může vypadat takto:
myself:$apr1$DKyOFQ.G$QEgnHSolx0IoJ20xN78fF. mygirlfriend:$apr1$qIkobQi2$UFjdyUuyGfb4kFGLILVPf/ Jessie:$apr1$GHISaAwA$eYuPX1.0vDlL7TOCT4Mpu/ |
Soubor garicam.conf
vložíme do adresáře
/etc/httpd/conf.d
, další soubory vložíme do adresářů, jak je v tomto
konfiguračním souboru napsáno, a restartujeme Apache. Pokud Apache nefunguje, přečtěte si
následující kapitolu.
Pokud je SELinux aktivován, soubory nesmí být na libovolných místech, ale musí
být v adresářích se správným kontextem. Není-li tato podmínka splněna, Apache vůbec
nenaběhne. Protože jsem neustále měl problémy s tím, že mi něco nefungovalo, raději jsem
SELinux vypnul tím, že jsem v souboru /etc/selinux/config
uvedl
SELINUX=disabled
a restartoval systém. Chcete-li SELinux používat a nezešílet, musíte si důkladně přečíst dokumentaci.
Za normálních okolností jsou dočasné soubory mazány téměř okamžitě po
vytvoření. V pracovním adresáři zůstanou pouze při násilném přerušení programu. K automatickému odstranění slouží program
garicamtmpclean.sh
. Nakopírujte jej
do adresáře /etc/cron.daily
. Nezapomeňte v něm upravit jméno adresáře na
hodnotu nastavenou v sekci
Příprava pracovního adresáře pro dočasné soubory.
Jazyk aplikace se nastavuje ve webovém prohlížeči. Každý prohlížeč umožňuje nastavení preferovaných jazyků pro zobrazení obsahu a jejich pořadí. Způsob nastavení je závislý na prohlížeči. Aplikace zvolí jazyk podle těchto preferencí. Pokud žádný z preferovaných jazyků není aplikací podporován, bude použita anglická verze.
V současnosti je podporována pouze angličtina a čeština. Chcete-li přispět s lokalizací do dalšího jazyka, kontaktujte autora a dodejte překlady textů. At the moment only Czech and English versions are available. If you wish to contribute localization to another language, contact the author and supply translation of the texts.
Nejprve je nutno zmínit, že USB port v kameře je velmi pomalý. Je mnohem výhodnější soubory kopírovat pomocí čtečky paměťových karet, i když máte jen USB2.
Soubory jsou v kameře ve dvou podadresářích adresáře DCIM
. V jednom z nich jsou pravděpodobně soubory chráněné proti přepsání, ale bližší informace v dokumentaci ke kameře není. Je
vhodné si v adresáři videí vytvořit podadresář pro danou
cestu a do něj nakopírovat soubory z obou adresářů. Chceme-li zkopírovat svoji cestu z 21.
srpna 2014, docílíme toho příkazy:
cd /path/to/my/video/files mkdir Route-2014-08-21 cp -v /media/camera/DCIM/*/20140821* Route-2014-08-21/ chmod +rx Route-2014-08-21 chmod +r Route-2014-08-21/* |
Pomocí příkazů chmod
nastavíme viditelnost souborů a adresářů pro
web server. Nezapomeňte, že atributy +rx
musí být nastaveny i pro všechny
rodičovské adresáře na cestě, jinak web server příslušné soubory neuvidí.
Program může být užíván a šířen podle licence GPL.
garicam-1.1.tar.gz, 1.3 MiB
Chci poděkovat českému distributorovi kamer CEL-TEC za to, že mi ochotně poskytl testovací soubor, takže jsem první alfa verzi mohl vytvořit před zakoupením kamery.
Jsem donucen k tomu, abych svou programátorskou prací sponzoroval hudebníky a jiné autorské svazy. Ukládám totiž své programy, vstupní data i výsledky výpočtů na CD a DVD.