Ugrás a főmenüre.
Web 2008.11.10. Internets video

Flash player CPU zabálás és wmode-ok

A Flash player CPU-t eszik, mint minden más. Hogy mennyit, az a benne lévő dolgoktól függ. Engem elsősorban az érdekel, hogy az általam gyártott iMectPlayer H264-es videóval hogyan muzsikál.
Az alapállás eddig az volt, hogy a Flash mindent szoftveresen oldott meg különösebb hardvertámogatás nélkül. Ez a H264 esetében igen komoly hátrány, egyetlen videó lejátszása egy öreg gépet képes teljesen leterhelni.
Flash player CPU zabálás és wmode-ok

Kaptunk rá (marketing) ígéretet, hogy a 10-es player már képes lesz a fejlettebb grafikai képességeket kihasználni. Itt van a végleges verzió, leteszteltem.

Sajnos a H264-et továbbra is szoftveresen dekódolja, pedig a legtöbb operációs rendszerben van erre már fejlettebb megoldás, hardveres képességeket kihasználó kodek, akármi. Sőt, a 10-es player a 9-eshez képest 5%-kal több CPU-t eszik a H264 lejátszásakor az én gépemen.

Wmode

Az újdonság az, hogy az embed kód wmode paraméterével többféle stratégia közül lehet választani és bekapcsolni mindenféle hardverközeli trükköket. Azért van többféle mód, mert sajnos kompromisszumokat kell kötni.

Normal mód: az operációs rendszer által kínált sztenderd API-val rajzol.

Transparent mód: a Flash objektum alatt/fölött lévő HTML (és egyéb) tartalmakat is megjeleníti, úgy viselkedik (legalábbis megpróbál), mint egy sima HTML elem. Mivel az alpha (átlátszóság) csatornát keveri, ez a mód a normálnál CPU igényesebb.

Opaque mód: csak Windows alatt van, olyan, mint a transparent, csak az objektum alatti elemekkel nem foglalkozik. Más OS alatt egyenlő a normal móddal.

Direct mód: a lehető legdirektebb módon kezeli a videókártyát, a saját területét direktben kezeli.

GPU mód: használja a videókártya néhány funkcióját, kompromisszum a normal és a direct mód között. Csak akkor ajánlják, ha egyetlen Flash objektum használja a weboldalon.

A videókártyával való viszony eltérése miatt a webes videók kissé másképpen, más színezettel, élességgel mutatkozhatnak meg az egyes módokban.

A számok

A tesztelést a saját gépemen végeztem (alu iMac, 2 GHz Core 2 Duo, 3 GB RAM). A videólejátszóban (iMectPlayer, mi más) be van kapcsolva minden trükk a lehető legjobb képminőség érdekében (pl. smoothing). Az utolsó sor egy sokkoló összehasonlító adat, ott Flash helyett ugyanazt a videót Quicktime-mal játszottam le.

mód CPU terhelés normál méretben teljes képernyőn
normal 35 100
transparent, opaque 42 95
gpu 28 95
direct 25 95
Quicktime 18 30

A fenti számokból kitűnően látszik, hogy a Flash nem használja ki megfelelően hardverünk képességeit. Ha lesz H.264-et lejátszó Silverlight (lesz, jövőre), akkor azzal is megnézem majd.

Sajnos a Webcsatornán a transparent módot használjuk, pedig nem kéne. Azért tesszük ezt, mert a player alsó két sarka lekerekített és átlátszó. Azt hiszem, hogy a teljesítmény oltárán ezt a kis designt be kellene áldoznunk.

2 hozzászólás

  1. idézem 2008.11.10. 23:02
    • pingvin
    Köszi, hasznos infók!
    Bár a gpu mód nálam sem akar észrevehető cpu nyereséget produkálni. Biztos csak bizonyos (3D-s?) műveleteknél van haszna.
    A full screen-es 95%-ok sajnos elég lehangolóak.
    Valami továbbra sem stimmel a 10-es playerben...

    Video cross fade-re nincs valami cpu hatékony ötletetek?

    Video loop-olással kapcsolatban is lenne egy (nem igazán idevágó) kérdésem. Egy Video objektumba betöltött video végigjátszása, majd seek(0.0)-zása és újraindítása picit lassú, azaz a loop-olás észrevehetően megakad egy rövid időre.
    Ezért két Video player-be szoktam feltöltögetni ugyanazt a videót, és ezeket váltogatva újrajátszani a felvételt. Ez jól is működik, de az lenne a kérdés, hogy lehet e valahogy a videót átmásolni az elsőből a második Video objektumba, hogy ne kelljen oda is külön letölteni ugyanazt a videót? Mert így duplán kell letölteni ugyanazt a videót...
  2. idézem 2008.11.11. 21:10
    @pingvin Igazából minden stimmel a Flash playerben, mert sajnos sosem volt CPU hatékony videó téren. A cross fade sajnos mindig is gázos lesz, mert alfával csinálja, szoftverből. Annyit tudok javasolni, hogy Tween osztállyal csináljad, de azzal végzed, akkor ennél többet már nem tudok. Video objektum másolás nincs, de ugyanazt a Netstream-et egyszerre több Video objektumhoz is rendelheted, persze egy Netstream egyszerre egy playhead-del rendelkezik, szóval a Te esetedre valószínűleg nem jó. Ha ugyanazt a fájlt töltöd be, akkor csak egyszer fog tölteni, mert a böngésző cache-ből szedi.
Új hozzászólás
A sortörések automatikusak. Csak az üzenet kitöltése kötelező, a többi mező opcionális. A megadott e-mail címet nem tesszük közzé. Engedélyezett HTML tagek: p, a, strong, em, blockquote, ul, ol, li, dl, dt, dd.

Legutolsó hozzászólások

DJ PLAYER Blue Edition: Gábor: Ja, és természetesen megy iPad-en is, hiszen _minden_ iOS app megy iPad-en.

DJ PLAYER Blue Edition: Gábor: Bug report-okat itt fogadunk: http://djplayer.net/page/bug_report_fixes

DJ PLAYER Blue Edition: hohand: Hello!A dj player mukodik iPad-on is?Tegnap feltettem, wifi-n athuztam ra zeneket,de amikor ranyomtam egy zeneszamra,error-t dobott es valami is!...

Uzsidoboz LED!: zo via Google Reader: vicces dolog, csak nem értem mire való

Uzsidoboz LED!: Gábor: @Benjamin Minek forogjanak? Egy falszínezőnek olyat nem kell tudnia, így is épp elég hatásosak.

iMect means internet, media and other cool things. iMect is a small company near lake Velence, Hungary. We’ve 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 cég vagyunk közel a Velencei-tóhoz. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.