2024. május 26., vasárnap

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

Webkamera live stream, de mivel?

  • (f)
  • (p)
Írta: |

Hogyan lehet egy webkamera képét weboldalon megjeleníteni pl. egy kisebb házi biztonsági rendszerhez?

[ ÚJ TESZT ]

A mjpg-streamer használata

Fontos, hogy csak olyan kamerából lehet közvetlenül M-JPEG streamet kinyerni, ami tud M-JPEG tömörítést végezni. Az olcsó, kínai webkamerák nem feltétlen ilyenek... Természetesen ez nem akadály, a mjpg-streamer képes YUV formátumban is videót kinyerni a kamerából, majd abból M-JPEG streamet előállítani, de ez jelentősen beterheli a processzort gyengébb hardvereken. A YUV módot akkor kell használni, a a "Unable to set format" üzenetet kapjuk a stream indulásakor.

A mjpg-streamer nem magában végzi a feladatát, hanem input és output pluginekkel dolgozik - ezekkel többféle feladathoz is alakítható a program. A legegyszerűbb esetben az input_uvc és az output_http plugin szükséges egy UVC webkamerából való streameléshez. Az input_testpicture plugin webkamera nélküli teszteléshez használható, az output_file különálló képek mentéséhez (pl. házi biztonsági rendszer, ami egy online tárhelyre menti a rögzített képeket...). Ha esetleg a program nem találja a plugineket, akkor vagy környezeti változóban adhatjuk meg a megfelelő könyvtárat, vagy a parancssorban a plugin fileneve elé a teljes útvonalat beírva.

Lássunk egy működő parancsot :

mjpg_streamer -i "input_uvc.so -y -d /dev/video0 -f 15 -r 640x480" -o "output_http.so -w /srv/www/stream"

Ez a parancssor az input_uvc.so input plugint használja, amely a /dev/video0 eszközről (az első video4linux2 eszköz) fogja venni a képet. A -y paraméter megadásával YUV formátumot használ, sajnos az én kamerám sem tud M-JPEG-et.

A -f 15 15 FPS-t jelent, ez bőven elég egy élő streamnek, és a -r 640x480 a felbontást állítja be. A plugin képes az erre alkalmas webkamerák LED-jeit is kapcsolgatni.

A kimenet az output_http.so pluginen keresztül működik, ami a /srv/www/stream könyvtárba dolgozik.
Alapvetően a 8080-as portot használja, de a -p [portszám] paraméterrel ezt megváltoztathatjuk. Nyilván, ha a hálózatunkon kívülről is el szeretnénk érni a streamet, akkor a megfelelő portot

a routerünkön forwardolni kell a műsort szolgáltató gép felé. Érdemes nem a 8080-ast használni, ez kicsit biztonságosabbá teszi a szolgáltatást. A -c felhasználónév:jelszó paraméter bejelentkezéshez köti a stream megtekintését, a -n letiltja a parancsok végrehajtását.

Egy egész részletes dokumentáció itt található

A mjpg-streamert a háttérben is futtathatjuk, ha állandó jelleggel szeretnénk szolgáltatni a képet. ez utóbbit pl. a

nohup mjpg_streamer -i "input_uvc.so -y -d /dev/video0 -f 15 -r 640x480" -o "output_http.so -w /srv/www/stream" &

paranccsal lehet például indítani a futó rendszeren. Természetesen az operációs rendszer indításakor is elindítható a stream, de ennek módja disztribúciófüggő.

Amennyiben fut a stream, a

http://gépcíme:8080/?action=stream

URL-en érhető el.


A MJPG-Streamer demo oldala

A streamet weboldalba is ágyazhatjuk, mint egy egyszerű JPEG képet :

<img alt="" src="http://oldalcime.ize:8080/?action=stream" width="640" height="480" />

Furcsa, hogy a beágyazott streammel valamiért nem reszeli állandóan a vinyót, míg ha csak magában a stream URL-jét kapja meg a böngésző, akkor a gép hangos hrhrhrhrhr -be kezd.

A mjpg-streamer webes felületéről vezérelni is lehet a kamerát, legalábbis a képtulajdonságokat, de megfelelő hardverrel a kamera mozgatása is megoldható. A vezérléshez szükség lesz a mjpg-streamerhez a csomaggal feltelepült demó oldalra, vagy annak a file-jai közül a telepített csomag által a /usr/www könyvtárba rakott functions.js és control.html állományokra. Ezeket eredeti formájukban is felhasználhatjuk, de forrásnak is megfelelnek, ami alapján létrehozhatjuk saját vezérlőpultunkat.

A file-okat a webszerveren abba a könyvtárba kell tenni, amit a streamet indító parancsban az output_http pluginnek megadtunk munkakönyvtárként - ha ott nem adtunk meg semmit, akkor a mjpg-streamer a /usr/www -ből fogja venni ezt, és a demo oldalt látjuk.

A vezérlés próbálgatása során kiderült, hogy csak a http://[cím]:8080 URL-lel működik a vezérlés, a http://[cím]/stream_oldal_könyvtára formátummal nem. A vezérlőgombok ebben az esetben is megjelennek, de a kép nem változik a nyomkodásukra. Természetesen a képet állítgatva az összes, a streamet néző monitorán változik a kép :)


Vezérlőgombok és a stream weboldalba ágyazva

Remélem, hasznos kis infó ez azoknak, akik webkamera streamelésbe szeretnének fogni, esetleg házi biztonsági rendszert akarnak létrehozni... vagy csak kíváncsiak, mit csinál a macska egyedül, amikor nincsenek otthon :)

Előzmények

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.