Ice Bear Soft GARICAM (गाड़ीकैम): GPS přehrávač pro CEL-TEC N5 v OS Linux

Garicam 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.

1. Původ názvu
2. Novinky ve verzi 1.1
3. Popis programu
4. Známé problémy a omezení
5. Instalace potřebných nástrojů
  5.1. ffmpeg
  5.2. jwplayer
  5.3. Google Maps API key
  5.4. Web server
6. Instalace a konfigurace programu Garicam
  6.1. Instalace souborů na web server
  6.2. Příprava adresáře pro videa
  6.3. Příprava pracovního adresáře pro dočasné soubory
  6.4. Konfigurace programu Garicam
  6.5. Konfigurace serveru Apache
  6.6. Apache a SELinux
  6.7. Mazání dočasných souborů z pracovního adresáře
7. Nastavení jazyka
8. Nahrání souborů z kamery
9. Licence
10. Download
11. Poděkování

1. Původ názvu

Název GARICAM (v dévanágarí psáno गाड़ीकैम) pochází z hindských slov गाड़ी का कैमरा, což znamená kamera v automobilu.

2. Novinky ve verzi 1.1

  1. Program je dostupný v angličtině a češtině, jazyk se volí pomocí standardního mechanismu sjednání obsahu.
  2. Časový průběh přehrávání je zobrazen na posuvné liště, kterou lze použít k rychlé navigaci i během přehrávání. Posuvná lišta vyžaduje prohlížeč s podporou HTML5
  3. Tlačitko Jeď posune přehrávač videa na nejbližší okamžik, kdy se vozidlo rozjede. Funkce je implementována takovým způsobem, aby obešla problémy způsobené chybou určení polohy pomocí GPS. Funkce je užitečná zejména v případě, že vozidlo čeká delší dobu například na železničním přejezdu. Tlačítko funguje správně pouze tehdy, kdy jsou k dispozici data z GPS.

3. Popis programu

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í.

4. Známé problémy a omezení

5. Instalace potřebných nástrojů

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

5.1. ffmpeg

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.

5.2. jwplayer

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/.

5.3. Google Maps API key

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.

5.4. Web server

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.

6. Instalace a konfigurace programu Garicam

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ů.

6.1. Instalace souborů na web server
6.2. Příprava adresáře pro videa
6.3. Příprava pracovního adresáře pro dočasné soubory
6.4. Konfigurace programu Garicam
6.5. Konfigurace serveru Apache
6.6. Apache a SELinux
6.7. Mazání dočasných souborů z pracovního adresáře

6.1. Instalace souborů na web server

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/*

6.2. Příprava adresáře pro videa

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.

6.3. Příprava pracovního adresáře pro dočasné soubory

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.

6.4. Konfigurace programu Garicam

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.

VideosRoot
je jméno adresáře s videy, který jste vytvořili v sekci Příprava adresáře pro videa.
TMPDIR
je plná cesta k pracovnímu adresáři pro dočasné soubory vytvořenému v sekci Příprava pracovního adresáře pro dočasné soubory.
IfconfigMe
rozhoduje o tom, zda má program najít veřejnou adresu, pokud používáte ve své síti NAT. Ve výchozím nastavení je to vypnuté, protože je to často pomalé. Pak dojde k vypršení času v rámu s mapou a mapa nebude fungovat.
Latitude, Longitude
jsou výchozí souřadnice GPS. Používají se pouze v případě, že během celé cesty nebyl vůbec dostupný signál GPS. Program se nejprve pokusí zjistit GPS souřadnice z IP adresy pomocí modulu geo_ip. Pokud není tento modul nainstalován nebo není informace pro danou IP adresu nalezena, použijí se výchozí souřadnice. Tyto souřadnice odpovídají náhodně zvolenému místu v Praze tak, aby to byla „hezká čísla“.

6.5. Konfigurace serveru Apache

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:

Require group family
Přístup budou mít všichni členové skupiny family.
Require user Tom Jessie mygirlfriend
Přístup bude povolen vyjmenovaným uživatelům.
Require valid-user
Přístup bude povolen každému platnému uživateli.

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.

6.6. Apache a SELinux

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.

6.7. Mazání dočasných souborů z pracovního adresáře

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.

7. Nastavení jazyka

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.

8. Nahrání souborů z kamery

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í.

9. Licence

Program může být užíván a šířen podle licence GPL.

10. Download

garicam-1.1.tar.gz, 1.3 MiB

11. Poděkování

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.