(A)PNG vs MNG vs SWF

A játékról: kliensek beszólnak szervernek hogy nesze pár byte, ez csinálják egy ideig majd a szerver csinál jutalomképpen egy animációt. (Igen, kicsit körökre osztott játék lesz, de finoman az infókkal, a következő postokban arra keresem majd a válasz, hogy lehet free játékkal pénzt keresni... Tehát legyen titok meg zárt addig. :)) Az animációs fázisképekből áll, ami esetünkben egy rakat PNG.

Jó kérdés, hogy milyen (szabad) formátumban terjesszünk animációt emberi módon, amiről méltán reméljük, hogy x év múlva is támogatja majd a legtöbb kliens, nem dögleszti le a forgalmi díjas esetleg lassú netes klienst és még esetleg mobilon vagy egyéb nem quad-core-os 4 Gb-os dual grafikus kártyájú eszközön is nézni akarja szegény bitrevágyó vizuális éhező. És mondjuk 1 percnyi anyag jusson le a bűvös 4 másodperces átlaguser userexperience timoute-ján belül.

A játék jelenlegi szintjén az animációnk még hang nélküli, és hogy talán élvezhető is legyen maradjon a jólismert youtube-os 640 x 480-as 30 fps-es megoldással gondolkodtunk, lelkesen bele is vetettük magunkat a "Legyen browser a kliens, úgyis az lesz a kicsi klienseken is."

És igen, ff3 már támogatja az (A)PNG-t, de előállítani free / opensource toolal nemigen lehet, se GIMP, se INKSCAPE se IMAGEMAGICK se se se, egyedül szegény https://sourceforge.net/projects/vdubapngmod/ maradt, amit viszont egész másra terveztek, megpróbáljuk vele.

A lelkesség alábbhagy, épp most segít szegény google a IE-n hogy ő is tudja mindezt, már meg sem merem említeni, hogy szegény MNG-t,amit az IMAGEMAGICK tud is szépen (csak ő, mencoder se), hozzá még java wrapper is van JNI-s meg commandline kigenerálós, de mng-t max playerpluginos kliens tud majd lejátszani... (fixme)

Marad tehát a jó öreg http://www.swftools.org/ és megnézni megy-e az eredményünk gnash-el. :)

Ja igen, gif-anim kilőve, mielőtt bárki irná... :)

Megcsinálom mindhérom formátumra a teszteket, veszteségmentesen, hogy ne legyen vita majd a méret/minőség bizonytalansági tényezőn... Lehet fogadni ki nyer...

Hozzászólások

Nya, egy kis segitseg:
Animacional 12fps az ami az also hatara az elmenynek, ez alatt fog nagyon szaggatni a dolog.
A hagyomanyos filmezesben 30 kepkocka masodpercenkent az elfogadott, a mozikban és a köztudatban 24 kocka van elterjedve. (Ennek az okaiba, most ne menjunk bele, mert koze van a filmszalag fizikai meretenek, az aranymetszesnek, a halozati frekvencianak es meg millio egy dolognak.)
Az animekben es 2D rajzfilmeknel alkalmazzak a duplakockazast ami gyakorlatilag a kepkockak duplazasat jelenti. Ez lassu jeleneteknel, allokepeknel megfelelo, de gyors valtasoknal rangatas lesz a vege. Ennek a modernizalt valtozata a blending, amikor ket egymas utan levo kockat osszemorfolnak, viszont ennel nagyon kell figyelni, mert a nemlinearis sebessegu jeleneteknel szetdobja az idozitest.
Altalanossagban elmondhato, hogy lassu jeleneteket duplakockazni, gyorsakat normal sebessegel animalni. Mindig arra kell figyelni, hogy a leggyorsabb mozgas legalabb 4 kockan keresztul legyen animalma, mert ez alatt szaggatas lesz az eredmeny.

Mindezt szamitogepes formaba teve:
A kepkockankenti adatmennyisegedet a kepmeret es a tomoritettseg hatarozza meg. Mivel neked jo felhasznaloi elmeny kell ezert rovid ido alatt kell nagy adatmennyiseget attolni. Mivel az APNG tamogatja a transzparens retegeket es a PNG tomorites merete fugg az egymas mellett levo szinek mennyisegevel, radikalisan tudod csokkenteni a filemeretedet a klasszikus kulcskepkockas tomoritessel. (Minden egymas utan levo kepet osszehasonlitasz egymassal es a megegyezo pixeleket kicsereled atlatszosagagal, az igy keletkezo kepen csak a valtozas lesz lathato. Mindezt 5-10 kockankent ujrakezdve, nagyobb animacios sebessegnel is elvezheto lesz a mozi)
Ezert eloszor meg kell hataroznod a legkisebb atviteli sebesseget (128K korul) es ebbol kikalkulalni, mekkora adatmennyiseget tudsz atvinni mielott elunna magat a nezo. A kepmeretbol es ebbol az adatbol kiszamolhatod, hogy atlagosan mekkora sebesseggel garazdalkodhatsz. Termeszetesen itt is lehet trukkozni. Ha tul alacsony a framerateed, eljatszhatod, hogy a nagysebessegu jeleneteknel (akcio, stb.) "szelesvasznusitod" az animaciot, emiatt egy kepkocka csak feleannyi helyet fog foglalni tehat ugyanannyi adatmennyisegnel dupla kepkockaszammal garazdalkodhatsz.
Apng generalasara hasznalhatod a JAPNG-t, ennek van gui es parancssori valtozata is:
http://www.reto-hoehener.ch/japng/

Az APNG es MNG ellen szol, hogy ezek kepformatumok, emiatt nem tamogatjak a hangokat es a felhasznaloi interakciokat. Egy ilyenhez illeszteni hangokat kisse remalom...

SWF generalasra nezd meg a MING-et. Ez egy C library aminek vannak wrapperei C++-hoz, PHP-hoz, Python-hoz, Ruby-hoz, es Perlhez.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Köszi, japng-t néztük már, a gond csak az "Japng is closed source."

A generálás most úgy megy, hogy Graphics2D-vel nyomunk egy BufferedImage-ra sok jót szépet színeset, nem transzparensen, majd ImageIO-val szépen kitoljuk.
Lévén azt hisszük, hogy lesz majd olyan plugin ami előre-hátra is teker az APNG-ben vagy MNG-ben mint ahogy van ilyen SWF-hez is :D És a jelenet kontrollált, fix frame-rate -et szeretnénk, hogy bármikor pause-t nyomnak, mindig legyen valami. :) Vagy írjuk ki, hogy épp jön feléd a foton, csak nem ért ide? :D
Transparens dolognál félő nem lehet "beletekerni" majd, mert mindig a "delta", vagyis az előző képhez képest történt változások. Legalábbis az IAGEMAGICK anim optimizáló guide-ja ezt írja... Még méregetünk. A többit megfogadjuk. Még jelentkezünk.

MING vs SWFTool is lesz akkor, ha már két villanásos versenyzőnk van. Az biztos, hogy trial-os win-es SWF optmizerek, 5-8% -ot tudnak még nyomni az SWF-tool eredményén...

A transparens-kulcskepes tomoritesnel a tekerest a kulcskep pozicioja hatarozza meg. Feltetelezem a tavoli jovoben ezt majd valami javascripttel lehet elerni. Tehat a lejatszot testre tudjatok szabni.
Amennyire neztem az apng-t nem cel benne, hogy filmelmenyt adjon.
Az animacio/swf toltesehez erdemes valami Ajaxos cuccott betenni. Mondjuk swfnel, erre nincs szukseg, mert csak egy preloadert kell irni (gyakorlatilag egy vegtelen ciklus ami figyeli a kliens oldalon a file meretet, egy esszeru time-outos kiugrassal). Ne essetek abba hibaba, mint sok stream video szolgaltato, hogy azt feltetelezitek, mindenkinek jo minosegu nete van.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

A transparens-kulcskepes tomoritesnel a tekerest a kulcskep pozicioja hatarozza meg. Feltetelezem a tavoli jovoben ezt majd valami javascripttel lehet elerni. Tehat a lejatszot testre tudjatok szabni.
Amennyire neztem az apng-t nem cel benne, hogy filmelmenyt adjon.
Az animacio/swf toltesehez erdemes valami Ajaxos cuccott betenni. Mondjuk swfnel, erre nincs szukseg, mert csak egy preloadert kell irni (gyakorlatilag egy vegtelen ciklus ami figyeli a kliens oldalon a file meretet, egy esszeru time-outos kiugrassal). Ne essetek abba hibaba, mint sok stream video szolgaltato, hogy azt feltetelezitek, mindenkinek jo minosegu nete van.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "