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.

1 komentář:

  1. Díky za tenhle návod. Ono dneska už to vypadá, že to není potřeba. Ale já zrovna nedávno narazil na to, že jsem přesně tohle potřeboval. :) A to nejsem žádný velký streamer nebo provozovatel MMA PPV či co já vím čeho. Ale prostě jsem jen potřeboval streamovat vlastní obraz na jedno školení, kterého jsem se nemohl účastnit osobně.

    OdpovědětVymazat