sobota 3. srpna 2013

Stream z webkamery přímo v prohlížeči pomocí VLC

Úvod

Už delší dobu jsem hledal možnost, jak streamovat video z webkamery takovým způsobem aby ho případný divák nemusel otvírat v žádném externím programu, ale aby se mu zobrazilo přímo v prohlížeči. Předpokládejme tedy situaci, kdy je webkamera připojena k serveru, kde běží Debian či Ubuntu Server, tedy nebudeme spouštět grafické rozhraní a klienti se budou připojovat právě na tento server.

Po projití několika návodů a postupů, jsem skončil u všeobecně oblíbeného VLC, které je známo spíše jako přehrávač multimédií na desktopu, ale už méně, jako výkoný streamovací nástroj.

Instalace

VLC nainstalujeme z příkazové řádky takto:
sudo apt-get install vlc
Nyní připojíme webkameru a zkontrolujeme, jestli systém zaregistroval kameru mezi USB zařízeními pomocí příkazu
lsusb
 Dále se podíváme, zda je v systému kamera viditelná jako video zařízení /dev/video*
ls -l /dev/video*
 Odpovědí systému na tento příkaz by mělo být něco takového:
crw-rw----+ 1 root video 81, 0 srp  3 10:42 /dev/video0
Nyní tedy k samotnému streamování. V příkazové řádce zadáme příkaz (vše na jeden řádek!)
cvlc v4l2:///dev/video0 --sout '#transcode{vcodec=theo,vb=256}:standard{access=http,mux=ogg,dst=:8888}'
Vysvětlivky:
  • cvlc - spouští VLC v režimu příkazové řádky, bez grafického rozhraní. Vhodné pro server.
  • v4l2 - Video4Linux, aplikace pro zachytávání signálu z TV tunerů a webkamer
  • /dev/video0 - zařízení prezentované v systému
V řádku  dále následuje co se má s výstupem z kamery dělat. Provede se překódování pomocí kodeku Theora s datovým tokem 256 kb/s. Video stream je zmuxován (sloučen) do kontejneru Ogg který je nativně podporován např. ve Firefoxu a proto ho použijeme. Stream je dostupný pomocí protokolu HTTP na portu 8888. Číslo portu lze samozřejmě měnit.

Z jiného počítače zadáme v prohlížeči IP adresu serveru (zde jen jako příklad) a port:
http://192.168.5.33:8888
Nyní už jsme měli vidět obraz z kamery.

Poznámky

  • Přehrávání vyzkoušeno v Mozilla Firefox 22.0. V Chromu a Opeře by myslím neměl být problém, u IE si ale nejsem jist.
  • Kódování v reálném čase vyžaduje hodně systémových prostředků (paměti) a výpočetní síly (CPU), proto je potřeba počítat s tím, že streamování bude server znatelně zatěžovat. S tím souvisí i plynulost přehrávání, zpoždění obrazu a max. počet připojených uživatelů. Odhaduji, že 1 GB RAM a 2 GHz procesor jsou minimum.

Žádné komentáře:

Okomentovat