Chrome Pepper API vs rtsp videó lejátszás

Sziasztok!

Egy "kis" gondom akadt a chrome új PPAPI-jával kapcsolatban. Remélem valaki már foglalkozott vele és esetleg ötlete is van rá, mert engem lassan az idegbaj kerülget.

Dióhélyban az a feladat, hogy rtsp használva (pl. IP kamerák) kellene web oldalon videót lejátszani chrome alatt (NPAPI-ról átállás PPAPI-ra).

Készült hozzá új PPAPI plugin (.so mac/linux-ra és .dll windows-ra). Remekül működik, csak egyetlen gond van vele, hogy nem lehet telepíteni chrome alá (csak --register-pepper-plugins parancsori kapcsolóval lehet elindítani). Ez így zsákutca.

Készült új PPAPI-s Nacl extension is. Ez működik, egyetlen gond vele, hogy nem tud hálózati kapcsolatot létrehozni (csak --allow-nacl-socket-api parancsori kapcsolóval lehet elindítani). Ez így szintén zsákutcának bizonyult.

Készült Nacl app is, amely alatt már működik a hálózati kapcsolat. Ezzel az a gondom, hogy egyrészt új ablakban nyílik meg, másrészt maga a web oldalak (külső szerverről származik, amelybe kellene beágyazni az rtps-s videókat) nem érhetőek el belőle. Így ez sem működő képes.

Van valakinek esetleg ötlete, hogy merre kellene tovább indulnom?

Hozzászólások

Köszönöm a segítségedet, de ezek app-ok, nem extension-ok. Pl. a FireSSH-t telepítés után a chrome://apps alatt jelenik meg és új ablakban indul el.

A kettő két külön kategória a chrome alatt. Az app-okat a fenti címről lehet elindítani és új ablakban nyílnak meg. A plugin szerű extension-okat meg embed-el lehet weboldalakba ágyazni.

Ezen túl van néhány plugin (chrome://plugins alatt), de úgy tűnik ezek a google-en kívűl más nem adhat a chrome-hoz.

"Az appok is exentsionok, ilyen értelemben, és a jogosultságok kezelésének értelmében nincs különbség a kettő közt."

Épp az a bajom, hogy nagyon is van különbség.

Extensionok és host-olt app-ok esetében (amikor nem background js, hanem html van megadva a manifest.json-ban) le vannak tiltva a socket-ek. Ekkor az app is a tabok között nyílik meg. Már telepítéskor sír rá a chrome, hogy nem lehet socket jogosultságot használni ennél a tipusnál. Amikor a plugin próbálja felépíteni az rtsp kapcsolatot akkor meg a chrome "beint" neki.

Packed app estén (background js hozza létre az ablakot) egyrészől egy teljesen új ablak nyílik meg (mint az FireSSH app esetén), de itt meg azt nem engedi, hogy külső forrásból html vagy js-t használjon az app.

"Ha pedig lenne, és chrome appként kellene megvalósítani, vajon az változtatna a felálláson?"

Ha legalább host-olt app esetén lehetne socket-et használni akkor igen, egyébként nem nagyon. Az a baj, hogy maga a plugin egy bonyolult webes alkalmazáshoz kellene amit tulajdonképpen az elejétől újra kellene írni, hogy a web szerver helyett (thtml, ajax, stb) minden az app-ban legyen. Változtatáskor meg a szerver oldalal párhuzamosan az app-ot is frissíteni kellene.

Eddig egyetlen javaslatot találtam erre a problémára, hogy kell egy app a socket-hez és kell egy másik (vagy extension) a html-hez és a kettő javascript-en keresztül valahogy (eddig nem sikerült még egy "hello"-t sem átküdeni, mert a chrome.runtime változik annak függvényében, hogy honnan akarja az ember használni) kommunikálna egymással. Bár az a gyanúm így a chrome nem fog erőforrás kímélően működni, hogy több fullhd-s video stream-et szöveggé könvretálva json-os javascripten kell áttolni.

Tisztára mint Internet Explorer-es időkben, amikor külön kellett fejleszteni a weboldalakat IE (ilyen-olyan verzióra) és az összes többi böngészőre.

Nekem nagyon úgy tűnik, hogy a XXI. század Internet Exprolere a Chrome lett.

Egyébként az a gyanúm, hogy valamilyen okból a PPAPI direkt tervezték ilyen használhatatlanra.

Szóval katasztrófa az egész :(

Oké, felületesen ismerem a témát, úgyhogy hülyeséget nem akarok mondani, de más úgyse írt még, úgyhogy írok :)

Alternatív megközelítésként a websocket felmerült? Ha egy közbeiktatott proxyn keresztül folyik a stream, akkor nem csak a plugin de még a kiterjesztések se kellenek a feladat megoldásához.

Nyilván a projekttől függ, hogy mennyire megoldható, de látatlanban nem tudom elképzelni, hogy olyan bonyolult lenne.

Személyes véleményem, hogy ha websockettel meg tudnátok oldani, akkor ez is lenne a legtisztább út. A pluginekkel csak a szívás van és volt. Lásd pl hogy nemrég a flash büntibe került firefox alatt, vagy hogy a chrome-ból tűnik el az npapi támogatás, ppapi java pedig sehol, holott csomó legacy rendszer (szükségtelenül) erre épül.