Hrátky s webkamerou II.

Další článek k tématu webových kamer. Tentokrát se týká programu webcam_server, kterým můžete celkem jednoduše zpřístupnit vaši webovou kameru na síti.

27.9.2006 06:00 | František Bublík | přečteno 13102×

Rád bych zde představil program, který mne zaujal svou praktickou stránkou a jednoduchým použitím. Jedná se o malý řádkový prográmek, který naleznete na jeho domovské stránce, nebo přímo jako distribuční balíček. Tento program zpřístupní jednoduchým způsobem obrázky z vaší webové kamery. Ke svému běhu ani nepotřebuje prostředí X. Jako klient se používá jakýkoli webový prohlížeč, který zobrazuje jpeg obrázky. Představte si následující situaci. Odjíždíte na dovolenou, berete si s sebou svůj notebook a doma necháte zapnutý počítač se zapojenou webkamerou a s běžícím webcam_serverem. Pak se odkudkoli přes internet připojíte ke svému počítači na port 8888 a můžete se podívat, jestli vám za dobu co jste pryč neuvadly květiny.

Nic samozřejmě nebrání tomu, abyste vytvořili webovou stránku s vaší kamerou a tu pak zpřístupnili celému internetovému světu. V následujících řádcích si ukážeme jak na to. Základním předpokladem je funkční, v linuxu fungující webová kamera. Můžete se inspirovat například předcházejícím článkem "Hrátky s webkamerou", nebo hledat další informace na internetu. Množství podporovaných kamer stále roste. Dalším předpokladem je veřejná IP adresa počítače, na kterém webcam_server poběží. V tomto článku nebudu řešit situaci, kdy veřejnou IP adresu nemáte, ale vlastníte nějaký webový prostor, na který můžete nahrávat své stránky. Pak sice můžete webovou kameru provozovat také, ale pro tento účel bude vhodnější jiný program, o němž si něco povíme příště.

Takže máme připojenou kameru k počítači a spouštíme program:

[ bfu@mujpocitac ~ ]$ webcam_server -d /dev/video0 -g 640x480 -x

Parametr -d označuje video zařízení ze kterého se mají číst snímky. V příkazu uvedené /dev/video0 má program defaultně nastavené, ale v případě že vlastníte třeba televizní kartu, v systému se vám objeví /dev/video1 a pak je nutné určit parametrem -d to správné zařízení, ke kterému přistupuje vaše kamera. Další parametr -g znamená geometrii obrazu a musí být uveden se správnou hodnotou, kterou vaše webová kamera podporuje. Parametr -x znamená prohození barev RGB => BGR, pokud je obraz do modra, nebo do červena. To záleží na způsobu naprogramování ovladače vaší kamery a softwaru, který s ní komunikuje. Po zadání předcházejícího příkazu se již můžete připojit internetovým prohlížečem na http://localhost:8888 a uvidíte obrázek z kamery. Webcam_server má celou řadu dalších parametrů, kterými si můžete jeho činnost přizpůsobit podle svých potřeb.

-c #vloží do obrázku textový řetězec s datem a časem vzniku obrázku
-fh -fv #prohodí obrázek horizontálně nebo vertikálně
-q #nastaví kvalitu jpeg komprese v hodnotách 0 - 100%
-G #můžete si pohrát s nastavením gama v hodnotách od -100 do 100
-p #nastaví port, na kterém bude program očekávat klienty - defaultně 8888

Pro další volby je tu manuálová stránka , kde se dozvíme vše ostatní. Ještě jednou se vrátím k prohození RGB => BGR barev. Tahle věc se může někdy nastavit už na úrovni jaderného modulu. V případě spca5xx je to parametr force_rgb=1, který se zapíše do /etc/modprobe.conf. Na úrovni modulu jde nastavit třeba i jas a kontrast, záleží na tom, co který modul podporuje. Výhodou pak může být omezení parametrů spouštěného softwaru. Možná ne každý ví, že si může nechat vypsat všechny volby modulu příkazem modinfo. Protože informací o modulu může být někdy opravdu mnoho, je výhodné si příkaz filtrovat přes grep. Následující příkaz vypíše všechny parametry, které přijímá modul spca5xx.

[ bfu@mujpocitac ~ ]$ modinfo spca5xx | grep parm

Nyní si již můžeme spustit webový prohlížeč např. firefox a do adresového řádku zadat http://localhost:8888 Po přímém připojení prohlížeče na port 8888 uvidíme statický obrázek. Chceme-li vidět další obrázek musíme použít tlačítko k obnovení stránky. Pro mrknutí se přes internet do bytu, jestli nás někdo nevykradl to sice stačí, ale pro veřejnou webkameru ne. Je tedy potřebné vytvořit html stránku, která bude obrázek pravidelně obnovovat. Program má v manuálové stránce návrh java appletu, který můžete vložit do vámi vytvořené html stránky. Stránka může být napsána například takto:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Webcam</title>
</head>
<body>
<div style="text-align: center;"><br>
Webová kamera<br>
<hr style="width: 100%; height: 2px;"><br>
</div>
<div style="text-align: center;">
<applet code="WebCamApplet.class" archive="applet.jar" height="240"
 width="320"><param value="http://localhost:8888" name="URL"><param
 value="1" name="FPS"><param value="320" name="width"><param value="240"
 name="height"></applet></div>
</body>
</html>

Zároveň v adresáři /usr/share/doc/webcam_server-0.4 najdeme soubory potřebné pro korektní běh appletu, které zkopírujeme do adresáře s html stránkou. Java applet přináší některé výhody, ale zároveň má své stinné stránky. Výhodou je určitý komfort, kdy si v prohlížeči můžete v kontextovém menu zvolit rychlost obrazového streamu v hodnotách 0.1 - unlimited FPS. V případě, že applet nenajde běžící webcam_server zobrazí chybovou hlášku na tmavém pozadí.

Webcam

Stránky s různými applety jsou k nalezení na internetu mimo jiné i na adrese, kerou uvádím níže. Takových stránek jsem zkoušel několik a rád bych zde zmínil nevýhody java appletu. Za prvé počítač, ze kterého chcete kameru sledovat musí mít nainstalovanou javu, což nemůžete u klientů na internetu zajistit. Za druhé java applet je hodně náročný na výkon počítače, zkoušel jsem několik podobně napsaných appletů a všechny zatěžovaly procesor více než přes polovinu. Je sice pravda, že ve výsledku běží jeden applet vždy na klientském počítači, ale uživatelé, kteří si budou prohlížet stránku, určitě budou potřebovat výkon počítače i na jiné věci než je upload snímků do prohlížeče. Mnohem výhodněji se jeví použití javascriptu ve stránce. Javascript podporují všechny hlavní prohlížeče IE, Firefox, Mozilla, Opera a mají jej defaultně zapnutý. Přestože javascript plní stejný účel jako applet, nemá celkem žádné nároky na procesor a nevyžaduje instalaci javy. Stránka s javascriptem (pro lepší orientaci je vyznačen červeně) by mohla vypadat například takto ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-2"
http-equiv="content-type">
<title>Moje webová kamera</title>

<script language="Javascript">
<!-- hide
var x = 10;
var y = 1;
var now;
function startClock() {
x = x-y;
document.form1.clock.value = x;
if (x <= 0) reload();
timerID = setTimeout("startClock()", 1000);
}
function reload() {
now = new Date();
var camImg = "http://localhost:8888" + "?" + now.getTime();
document.campicture.src = camImg;
x = 10;
document.form1.clock.value = x;
}
// end hide -->
</script>

</head>
<body onload="startClock()" font face="Arial,Helvetica,Verdana" 
style="background-color: gray; color: rgb(0, 0, 0);" 
alink="#ee0000" link="#0000ee" vlink="#551a8b">
<center>
<h1><font size="-1">MOJE WEBOVÁ
KAMERA</font></h1>
<p>
<p><font size="-1">
<img name="campicture" src="http://localhost:8888" 
alt="My WebCam Image" border="5" 
height="288" width="352"><br>
</font></p>
<form name="form1"><font
size="-1">Automatické obnovení za</font>
<input name="clock" size="2" value="" type="text">sekund.
<br>
Obrázek se obnovuje intervalu 10 sekund.
</p>
<hr width="225"> 
<br>Jednoduché příklady podobných stránek
<b><i><a
href="http://developers.webcamworld.com//templates.html"
target="_top">WebCam
World</a></i></b><br>
</form>
</center>
</body>
</html>

Všimněte si, že jako adresa obrázku je ve zdrojovém kódu uveden http://localhost:8888 což je jen příklad pro testování stránky na vlastním počítači. Pokud chcete zpřístupnit obrázek jiným počítačům, musíte zde uvést vaši IP adresu. Dále si všimněte, že adresa obrázku je uvedena dvakrát. Jednou v javascriptu a pak ještě ve stránce v tagu <img name> . Další, jednoduché příklady html stránek pro použití webkamery najdete na této adrese. Tam jsem čerpal i já. Stránku si pak už přizpůsobit vlastnímu vzhledu není velký problém. Pokud neumíte vytvářet webové stránky, stačí si v libovolném textovém editoru otevřít výše uvedený zdrojový kód, přepsat v něm nadpisy, místo "localhost" vložit správnou IP adresu a soubor uložit například jako index.html. Jak se stránkou dále naložit? Stačí ji mít uloženou lokálně na disku počítače, na kterém si chcete obrázky z webkamery prohlížet. Pokud bude souhlasit IP adresa a port webcam_serveru, prohlížeč vám zpřístupní webkameru odkudkoli z internetu.

Chcete-li webkameru "zveřejnit", bude potřeba zprovoznit nějaký http server a stránku na něm vystavit. Jedna z možností je program "Boa server", o němž píše na abclinuxu pan Vondráček. Tento server je velmi jednoduchý s omezenými funkcemi, ale velmi snadno se nastavuje. Konfigurační soubor se jmenuje boa.conf a v Mandrivě je k nalezení v /etc/boa/boa.conf. Snad jen upozorním na dvě volby, nebudete-li mít chuť studovat další články a návody ;-) . První volbou je MimeTypes, kde uvádíte cestu k souboru mime.types - obvykle umístěnému v adresáři /etc. Háček je v tom, že v balíčku Boa serveru soubor mime.types nenajdete. Pokud se soubor nachází ve vaší distribuci, není problém, jen k němu uvedete správnou cestu. Pokud ne, je řešením zkopírovat jej z balíčku Apache a uložit do /etc. Další volbou, kterou musíte správně zadat je DefaultRoot, kde uvádíte adresář obsahující vaší www prezentaci. V adresáři musí být minimálně stránka s názvem index.html.

MimeTypes /etc/mime.types
DefaultRoot /var/www

U všech souborů ve webovém adresáři (DefaultRootu) je nutné nastavit právo ke čtení pro všechny uživatele, protože Boa server povoluje přístup k souborům na základě těchto práv. Umístíte-li do adresáře vaši stránku napsanou pro webkameru pod názvem index.html, tak po spuštění Boa serveru je už vaše webkamera viditelná na internetu.

Webcam_server provozuji v domácích podmínkách, neměl jsem možnost jej zkoušet při větší zátěži. Pro masivnější nasazení by určitě bylo dobré jej otestovat. Mám vyzkoušené, že při obsluze čtyř klientů současně chodí spolehlivě. Program je vhodný pro poskytování obrázků z webové kamery na vnitřní síti nebo internetu, v druhém případě je ovšem potřeba veřejná IP adresa a dostatečně propustná linka. V současné době webcam_server preferuji při svých hrátkách s webovou kamerou.

Odkazy:

Hrátky s webkamerou
http://webcamserver.sourceforge.net/
http://developers.webcamworld.com/templates.html
http://www.abclinuxu.cz/clanky/multimedia/linuxova-webkamera

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=1314