Lassan egy éve, hogy megkaptuk a Windows Azure Platform Partner of the Year címet Washingtonban az online oktatási keretrendszer-kezdeményezésünkért. Gondoltam, leírom, meddig jutottunk az elmúlt egy évben – és milyen áron.
A dream
Az álom úgy fogalmazódott meg, hogy tartottunk mi már online oktatást mindenféle eszközzel: Live Meetinggel, WiZiQ-val, ingyombingyommal, de ezek egyike sem oktatásra lett kitalálva (vagy legalábbis gyakorló oktatót nem engedtek a fejlesztők közelébe), mert mindegyikből hiányoznak olyan alapvető funkciók, mint:
- Közös vágólap a hallgatókkal. A tanár kikopizza (CTRL+C), a diák bepasztázza (CTRL+V). Ez nálunk olyannyira alapvető, hogy én nem is értem, a világ más tájain ez ez igény hogyhogy még csak fel sem merült?
- Instant fájlmegosztás ízi módon. Nem úgy, hogy én föleftépézem, te le, vagy szerencsétlenkedsz valami dánlód menedzserben, és letöltöd, hanem én rábökök az én oldalamon, nálad felbukkan a te oldaladon
- Lényegkövető képernyőátvitel. Ha eltér a tanár és a diák képernyőfelbontása, óhatatlanul felmerül az a kérdés, hogy most akkor mi legyen. Kilógjon? Vagy kicsinyítsük le? Nos, mindkét megoldás értelmetlen, mert ha pont az a része lóg ki a képernyőképnek a hallgatónál, ahol a „cselekmény” történik, lemarad róla. Esetleg kézzel odagörget, ha egyáltalán észreveszi, hogy a képernyő szélén túl zajlik épp az élet. A kicsinyítés is marhaság: egyből olvashatatlanná válik a kép. Miért nincs intelligens görgetés egyik termékben sem? Hisz még ha 5000 x 3400-ban adom is az adás, a képernyőnek csak egy elenyésző kis részén van változás: ott, ahol dolgozom. A többit le lehet(ne)cropponi.
- Tanfolyamkövetés tetszőleges eszközön (pl. a hűtőgép ajtaján, vagy a porszívó LCD-kijelzőjén). Ha épp a vonaton ülsz, amikor a tanfolyam van, kapcsolódj be 3G-n a telefonoddal! A lényegkövető képernyőátvitel szépen begörgeti a pici képernyőre 100%-os méretben, amit látni kell. Kicsinyítés nélkül.
- Intergalaktikus cset: ha egy kérdésre nincs azonnal válasz, válaszolódjon meg akár az óra után
- Kereskető videó. Felveszünk egy egész hetes tanfolyamot. Abból – meglepő módon – 40 órányi videó keletkezik. Kinek van arra ideje, hogy ebben bogarásszon? Miért nem lehet rákeresni a tartalomra? Hiszen minden adat rendelkezésre áll, minden begépelt karakter megvan.
Nagyjából ezek a funkciók hiányoznak minden kereskedelmi és ingyenes termékből. Van viszont bennük általában rajzolómű (kérdem én: minek? kivetítem a képernyőképet, azon a Paint.EXE-t és rajzolok), feliratozási lehetőség (kérdem én: minek? elindítok egy VI editort…), meg natív PPT-vetítési lehetőség, amit mi alapból nem használunk. De ha használnánk, akkor is kérdem én, minek, hisz a PowerPoint szépen vetít magában is, én meg a képernyőképet továbbítom, ugye.
Na ezen álmok közül tavaly nyárra formát öltött a közös klipbord, a kereshető videó és az instant fáljmegosztás, mindez Windows Azure-on, úgyhogy elhoztuk a pálmát. Az IT Factory hallgatói találkoztak is ezekkel szolgáltatásokkal a TrainerTool-StudentTool párosnál. De nem jutottunk semmire az egyik legnagyobb dobással, a lényegkövető képernyőátvitellel, pedig ez lenne a kulcsa a tanfolyam mobilizálásának telefonra, iPad-ra.
Ki vetít és mivel?
A lényegkövető képátvitel megvalósítását több tényező együttesen akadályozza. Elsőként talán az, hogy míg van a világnak egy olyanja, hogy YouTube, amivel konzerv videókat lehet továbbítani, nemigen van ugyanez élő adásra. Illetve van, de mindig-mindig TV-re „optimalizálva”, TV-t utánozva. Ja, és mindig Flash, amihez - .net fejlesztőként – egyáltalán nem értünk, és már nem is akarunk érteni arra a rövid időre, ami még a Flash-videók életéből hátravan. Viva HTML5!
A másik, hogy nincs kicsi, értelmes cucc arra, hogy saját programból kéernyőképet vegyünk fel és még streameljünk is. Nincs ilyen DLL, nincs ilyen API. A Camtasianak nincs API-ja, a Microsoft Expression Encodernek ugyan van, de a licencelése annyira kiborítóan vacak, hogy gyakorlatilag nem lehet vele dolgozni. A DirectX-et meg hívogassa a hóhér.
A harmadik, hogy nincs a világon olyan technológia, amivel két videósztrímet (képernyőkép és kamera) össze lehetne szinkronizálni. Nincs. Az egyetlen ismert szinkronizált adatfolyam a Smooth Streaming a Microsofttól, de az nem tud olyat, hogy teljesen különböző képfolyamokat tartson szinkronban, csakis egy műsor különböző bitrátás streamjeit kezeli. Ezen a területen mindenki gányol, legyen az a Microsoft a Live Meetinggel, vagy a Citrix vagy a Cisco, vagy a WiZQ és/vagy bármi.
Ezekkel a videós küzdelmekkel lassan eltelt egy egész év anélkül, hogy egy millimétert is haladtunk volna előre.
Mindeközben folyamatosan nyomtuk az oktatásokat a WiZiQ segítsgével, mígnem tavaly ősszel egy drámai „fejleszést” hajtottak végre, amitől számunkra meghalt a cucc: ha képernyőt vetítesz, többé nem látszik az oktató, és nincs cset sem. Természetesen ezeket az istenverte „fejlesztéseket” egyik napról a másikra vezették be, minden értesítés nélkül, így volt fejetlen kapkodás, hogy most aztán mit csináljunk.
Megváltásként érkezett tavaly ősszel a magyar fejlesztésű join.me, amivel a képernyőmegosztási problémánkat hirtelen meg tudtuk oldani, viszont odalett a kép és a hang, mert a join.me ezeket nem tudja. Mellesleg Flash a szentem. És hopp, még egy magyar cég a láthatáron, a Ustream.com, velük lehet kameraképet és hangot közvetíteni. Szintén Flash. És még ott a TrainerTool, ami a csodaklipbordot adja a képlethez. SilverLight. Januárra elkészült egy működőképes mashup ebből a három komponensből, amivel mostanában az oktatásokat tartjuk.
Kicsit zavaró, hogy a join.me-nek is van egy csetje, meg nekünk is, és a társaság fele ide gépel, a másik oda, meg az sem elegáns, hogy a képernyőkép és a kamera között semmiféle szinkronizációra nincs lehetőség, így egy nap alatt simán összejön 12-20 másodpercnyi elcsúszás, ami már öléggé problémás. De legalább a fenti dreamlistából jó párat teljesít a hákolmány.
Csapjunk bele a lecsóba!
Mivel egy év várakozás után a világ még mindig nem tart ott, ahol nekünk hasznos lenne, egy hirtelen döntéssel elhatároztuk, hogy hát akkor most már mégiscsak megyünk tovább. A két stream szinkronozálására egy nagyon fapados ötlet ad lehetőséget: egyszerűen a képernyőkép mellé PIPeljük (Picture in Picture) a kameraképet ugyanabban a streamben bele a fekete semmibe. Tehát nem PIP, hanem POP (Picture Outside of Picture area). A közös streamből kliensoldalon kivágjuk a képernyőképet és a fejet, és úgy teszünk, mintha két különböző képforrás lenne, pedig dehogy. Ha valaki nem a mi lejáccónkkal nézi az adást, „a képernyő bal szélén vastag fekete csík látható”.
Ezzel megvolnánk. Most jön a nemzetközi streamelési infrastruktúra, nem Flash-alapon. Na az nincs. Vagy rosszul használom a Googlet, vagy nincs. Én ez utóbbira gyanaxom.
Persze, tudom, itt van a MyShowRoom.TV, de ők teljesen Hungary-központúak, néhány csáppal Csehországba meg talán Romániába. Kívánom nekik, hogy hódítsák meg a világot, mert akkor megyünk utánuk szélárnyékban. De addig? Addig az ember felhúz Amerikában egy virtuális gépet mondjuk az Amazonnál, feltesz rá egy médiaszervert, és kész. Ez most hasból írtam, nem tartunk itt, de ott sem, hogy egyáltalán tudnám, egy ilyen Amazonos médiaszerver vajon rentábilisan üzemeltethető-e, vagy félszemű rabló.
Ahol tartunk, az egy saját médiaszerver, ami egyidejűleg ezer hazai nézőt tud kiszolgálni – meg néhány külföldit, amíg a nemzetközi sávszélesség el nem dugul. Tesztüzemmódban. Hamarosan ismét technológiát váltunk, megy a levesbe a flash-mash, és jön a saját fejlesztésű kliens. Meg új bugok is persze. A komplexitás nem adja fel könnyen, mindig beleugat.
Nehéz dolog meghódítani a világot! 