Hogyan jön a videó a Flash playerbe? Milyen codec-ek vannak, live videó, média szerverek, pseudo streaming, FLV, h264. Csodák! A végén még a Quicktime-ot is meggyógyítjuk.
A videó kódolása háromféle lehet: h263 (Sorenson Sparc), VP6 (On2) vagy h264. A h263 a legrégebbi "kockás YouTube", a VP6 már fasza minőségű, de drága előállítani, a h264 pedig a legjobb, ráadásul open eszközökkel (pl. FFMPEG) készíthető új versenyző. Az első kettő még FLV fájlokban csücsül, a h264 már MP4-ben.
Ha ma valaki h263-ba kódol, akkor nem követi a fejleményeket, ne dolgozz ilyen emberekkel. Sajnos még most is látni h263-al kódolt Flash-es reklámbannereket, hát most szólok, hogy oda kéne figyelni!
Nellymoser, MP3 vagy AAC lehet. A Nellymoser gagyi, rossz minőséggel és ehhez képest nagy mérettel, az MP3-at nem kell bemutatni, az AAC pedig a legjobb (igen, az MP3-nál is), mind méretben, mind pedig minőségben.
FLV-ben az első kettő, MP4-ben pedig az AAC játszik. A leggyakoribb és sztenderd párosítások tehát (video-audio): h263-Nellymoser, VP6-MP3, h264-AAC.
A Flash player ismeri a kamerádat és a mikrofonodat, valamint el tudja küldeni egy szervernek a folyamot. Desajnos! Nem áll az összes előbb felsorolt codec a rendelkezésedre, sőt: live videónál jelenleg csak Nellymoser (monó!!!) audió lehet Sorenson h263 videóval, tehát csak a legócskább kombináció érhető el.
Magában a Flash playerben van benne ez a kódoló páros és a szerverhez küldés előtt még a te gépeden kódolja az ügyeket, ezért pörög a procid live videó küldése esetén.
Vannak olyan asztali alkalmazások (pl. Adobe Flash Media Encoder), amelyek már a minőségibb változatokba kódolnak és ugyanúgy a Flash Media Servernek küldik a folyamot. Ezek egyértelműen jobbak, viszont telepíteni kell.
Állítólag a legjobb a Kulabyte (micsoda hülye név), ami élőben kódol majdnem-HD minőséget, ráadásul 2-pass VBR! Durva.
Kis magyarázat: a videókódolás lehet 1 vagy 2 menetes (pass), most ne menjünk a 3 menetes ügyekbe, az amúgy is hülyeség imho. 1 menet esetén egyszer megy végig a videón és bekódolja, pont. Live videónál csak 1 menet volt a Kulabyte megoldásáig.
2 menetesnél először végignézi, megjegyzi a rázós helyeket és a második menetben kódol úgy, hogy az első menetből már tudja mi fog következni és fel tud készülni. Így jobb a minőség, főleg a mozgásoknál. Cserébe persze kábé kétszer lassabb.
Háromféle lehet: progresszív download, streaming és pseudo-streaming. A progresszív download a legegyszerűbb, felteszed valahova a videót és a Flash player letölti. Letöltés közben ha már elegendő adat jött le, akkor elkezdi a lejátszást, nem kell a teljes fájlt megvárni.
A progresszív download nem oldja meg a még nem letöltött részekbe történő ugrást és nem jó a live közvetítésekre sem, ehhez már streaming kell, amit speciális média szerverekkel lehet. Ehhez van ugye az Adobe saját Flash Media Server-e, de az drága, úgyhogy szerencsére vannak már alternatívák.
Ott van a Wowza Media Server (szintén elég drága), az open source Red5 és a szintén open Milenia Grafter. Ezek közül a Milenia a legszimpatikusabb, mert kicsi, könnyű a telepítése és a beállítása, valamint magyar srác terméke.
A pseudo-streaming a harmadik alternatíva, ami ugyan csak egyetlen problémát old meg a progresszív download-hoz képest, de talán ez a leginkább igényelt funkció: pseudo-streaming-gel média szerverek nélkül lehet beletekerni a még nem letöltött részekbe. Ilyenkor a letöltés újraindul a kért résztől.
A pseudo-streaming nem natív Flash funkció, bele kell programozni viszonylag bonyolultabb kóddal, de egy csomó player tudja már, az enyém is. Ugyan nem kell speciális média szerver, de két dolog szükséges:
A videófájlt speciális metaadatokkal kell ellátni, ami tartalmazza a kulcs-frame-ek helyeit (csak kulcs-frame-re lehet állni, "tekerni").
A webszervert is fel kell készíteni, hogy pseudo-streaming beletekerés esetén on-demand módon egy minimális átalakítást végezzen az épp kiszolgált videófájlon.
Szerencsére mindkét feladathoz kiváló open eszközök állnak rendelkezésre, pl. az elsőhöz a Yamdi.
A második megoldására a Lighttpd lett a de-facto sztenderd, mert ahhoz van mod_flv_streaming és mod_h264_streaming modul, tök könnyen le lehet fordítani velük, szimpla kis .c dolgok. A YouTube is pontosan ezt használja.
A h264-et is lehet pseudo-streamelni, még Yamdi se kell hozzá, de minden h264-es mp4 fájlon le kell futtatni a qt-faststart szösszenetet, ami a progresszív download-hoz is szükséges.
Magyarázat. Kicsit idióta ez a formátum és a legfontosabb fejléceket a fájl végére teszi, így sima letöltés esetén is csak akkor tudna elindulni a lejátszás, ha teljesen letöltődött a videó. A qt-faststart átteszi előre.
A legtöbb Quicktime-os formátum egyébként ilyen, ezért a qt-faststart minden fájlhoz ajánlott, asztalra is: a vele patkolt videók sokkal gyorsabban töltődnek, mert nem kell végigpörgetni mondjuk egy többszáz megás letorrentelt filmet a lejátszás elkezdéséhez.
iMect means internet, media and other cool things. We're a small company located in Hungary. There is a big footer on every page where you can discover what we do and what happens with us.
Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis magyar cég vagyunk. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.