Az opensource elfeledett hősei: Gereöffy Árpi
Már éppen itt volt az ideje, hogy egy magyar is felkerüljön erre a listára, és nem is akármivel!!!
Történt vala a dicső ’90-es évek végén -annyira a végén, hogy már 2000-et írtunk-, hogy Árpi üldögélt a Blaha Lujza téri Bánki Donát főiskola számtech-termében, és serényen töltögette lefele a kalózvilág friss ágának termékeit: mozifilmek SVCD kiadásának warezosított változatát az internetről. Ki ne emlékezne a “Z-betűs” Mátrixra ebből az időből? Ez akkor még nagyon újdonságnak számított, hisz’ még a 33.6k-s modemes korszak tombolt, ezért nem volt jellemző a filmek warezolása. Aki megtehette, töltötte őket, mintha nem lenne holnap – és mintha nem jelenne meg 7 év múlva az interneten a netflix. Nos, ez mind szép és jó, de a filmek svcd (mpeg2) formátumban már nem fértek fel egy hagyományos cd-re (szándékosan), ezért a warezcsapatok (akik a mai napig a jó minőségű ripeket készítik – mellesleg ellenszolgáltatás nélkül) más formátumba konvertálták át a filmeket; akkoriban a népszerű DivX-re. De ezen kívül is volt még pár elterjedt vagy kevésbé elterjedt formátum. Nos, hősünknek igencsak baszta a csőrét, hogy nincs egy normális média lejátszó Linuxra, így vagy az azóta is bughalmaz xine-t szidta, hogy már megint lefagyott; vagy wine-ből próbálta futtatni a bsplayer.exe-t, ami ha nem fagyott le, akkor lassú volt. Azért egy-egy jó napján 10 filmből akár 6ot is meg tudott nézni – szóval ilyen idők voltak ezek.
Cudar világ volt ez, hogy minden cég megcsinálta a saját kis video- és audioformátumát, amihez összehegesztett egy éppenhogycsak működő kliens windows-ra – és azt hitték, hogy ez lesz jó. Dehát ez így senkinek sem jó. Árpinak meg aztán főleg nem. És mivel nem létezett normális lejátszó linuxra, ezért…. Nnna, ki találja a sztori következő lépését? Valaki esetleg? Tippek? Bekiabálások? […] Úgy van! Árpi fogta magát, és elkezdett írni egy médiaplayert. Amennyi fantáziája egy programozónak lehet, azt mindet bevetette, és elnevezte MPlayer-nek! (Teljes nevén: “The Movie Player for Linux”. )
Eleinte igen gyorsan haladt a dokumentált formátumok beépítésével, de aztán egyre inkább falakba ütközött a zárt forrású codec-eknek köszönhetően. (codec = amivel el van kódolva a film és a hang. Avagy az analóg információból digitális információt csinálunk; vagy fordítva. Btw. ez egy rövidítés, az encoder-decoder szavak összeolvadása.) Unalmas életébe ez vitt egy kis színt, mert így a már korábban emlegetett reverse engineering technikával kezdte kitapasztalni, hogy ezek a codec-ek hogyan működhetnek. De nem csak ám a codec-ek, hanem a container-ek is. A konténer az, amiben benne vannak a különböző kodekű stream-ek, és a konténer felelős azért, hogy ezek helyét, méretét és kapcsolatait számontartsa.
Nem kell mindjárt megijedni, és idegesen a kommentekhez görgetni! Hasznos tudás ez, pláne így 2018-ban, amikor már minden videot így fogyasztunk. A digitális tv-adás is pontosan így működik, de a skype vagy a youtube is. Fontos tudni a mai világban, hogy ne nézzenek teljesen hülyének bennünket, mert azt mondjuk, hogy
– Ennek a filmnek .mkv (pont emkávé) a típusa, mivel játszam le?
– A matroska (mkv) nem típus, hülyegyerek, hanem csak egy konténer! Azon belül bármi lehet, akár még jpeg és mp3 is! De még dalszöveg is, lamer!
Szóval ilyen beszélgetések elkerülése végett tartottam fontosnak ezt megjegyezni (nameg leütésenként kapom a pénzt, ugye ;-> ) Akkor itt most hadd meséljek el egy személyes történetet, ami 2001-ben esett meg velem február 16-án (hejj, mintha csak tegnap lett volna!). Árpi már korábban meghirdette, hogy az ftp.mplayerhq.hu-ra (illetve akkor még a thot.banki.hu-ra) mindenki töltse fel azon filmjeit, amit az MPlayer nem, vagy csak bugosan játszik le. Ő majd megszakérti (reverse engineering), és a következő MPlayer már jó eséllyel vinni fogja, mint az álom. Modemes userként én inkább a személyes találkozót erőltettem, és előzetes megbeszélés alapján még egy frissen gőzölgő pizzát is a cd mellé csaptam, mielőtt felcsöngettem volna hozzá. (Akkoriban nem volt netpincér, meg netes kajarendelés sem.) Árpi vígan falatozva konstatálta azt, amit én is: Csak a hang szól, a kép meg nincs. “Bezzeg a xine-vel van!” – mondtam az infót, de erre Árpi olyan szúrósan tekintett rám, hogy inkább visszaszívtam a gondolatát is, hogy bármi más médialejátszót említsek a jelenlétében. Kilépett az mplayer-ből, betöltötte a filmet a saját hexa editorjába, és a page down ütemes nyomogatásával elkezdte bámulni a biteket, ami valahogy így nézett ki:
Aztán megszólal:
– Ahogy látom, itt a film eleje, mert sok a fekete pixel, és csak középen van csak rikító fehér. Ez a stáblista lesz valószínű. Így kezdődik?
– Igen, igen. Az első pár perc az ilyen, aztán…
– Áhá, most meg valami nagy kékség van nem szabályos formákkal. Ez ég lehet vagy tenger.
– Éggel kezdődik, igen…
Nos, Árpi a hexa kód nézegetésével, ha nem is fullhd moziélményben, és nem teljesen pontosan, de meg tudta mondani, hogy a divx-szel kódolt filmben nagyjából mi történik. Még az is lehet, hogy fejből vágta a codec-et. ;-> Hiányolta az audio frame-eket (szeleteket), amik manapság mindig fésűszerűen a video frame-ek közé vannak ágyazva, de abban az esetben nem így történt. Ez egy ún. non-interleaved avi file volt, ami nem szokványos, ámde szabványos. Az MPlayer nem volt felkészülve erre, de Árpi megnyugtatott, hogy mire hazaérek, már fent lesz az ftp.mplayerhq.hu-n az új verzió, ami vinni fogja a filmet. Elköszöntem hát tőle, otthagytam a félig kihűlt, félig elfogyott pizzával; otthon letötöltöttem az új MPlayert, és Árpinak -hogyhogynem, de- igaza lett.
Szóval Árpi serényen fejlesztgette új dédelgeteményét (mii???), és erre már Fabrice Bellard is felfigyelt. Mondjuk nem volt olyan nehéz dolga, mert a sourceforge.net-en -ami az opensource projectek legnagyobb gyűjtőhelye volt akkoriban- évekig vezette a letöltési toplistát, még a Linux kernelt is beelőzve! Többször megkapta “az év legjobb opensource software-e” díjat különböző helyekről – nemhiába, mindenki szeretett filmet nézni, és végre ezt kényelmesen megtehette. Nem kellett senyvedni az idióta codecpakkok telepítésével, szopni a lefagyós lejátszókkal, a szétcsúszó hanggal és képekkel… Árpit többször megkérdezték, hogy miért jobb az MPlayer, mint a többi player széles-e világban. “Mert működik” – fogalmazta meg tömören milliók egyöntetű véleményét.
A Fabrice Bellard gyerek úgy jön a képbe, hogy ő meg egy média library-t (azaz codec-gyűjteményt) kezdett ezidőtájt fejlesztgetni, és látta, hogy Árpi olyan amúgy zárt codec-eket is visszafejtett majd opensource-ként implementált, amire neki is szüksége van a projektjéhez. Árpi elsősorban egy player-t csinált, ami önállóan működik, Fabrice pedig egy univerzális library-ban gondolkodott. Ekkoriban az MPlayer és az FFmpeg fejlesztőgárdája elég nagy átfedéseket mutatott. Kölcsönösen vették át az ötleteket és a kész kódokat egymástól – hát igen, pontosan ez az opensource lényege!
Az MPlayer másik nagy dobása az összes többi player-rel szemben az volt, hogy beleépített egy kis wine-t, azaz windows emulátort (de a wine nem emu; tudom, köszi!) a player kódjába, így gyakorlatilag bármely még vissza nem fejtett zárt forrású codec .DLL-ét elég volt odamásolni mellé, és máris röpült a film. Ez még a vindózos kodekpakkolós-installálgatós megoldásnál is egyszerűbb volt. Ebben ez időben úgy írtam -lányoknak- cd-t filmmel, hogy felmásoltam a 690megás filmet, és a maradék 10 megába egy darab mplayer.exe-t, amellé egy inditsel.bat-ot, így sose kellett kétségbeesett megkereséseket kapnom, hogy nem indul a film, és a társaságban én lettem a bezzegember (persze csak filmekre vonatkoztatva :-> ). Eközben Fabrice és az FFmpeg team el volt maradva, mivel ők tartották magukat az opensource és a licencek szigorú szabályaihoz, de Árpi nagy ívben beleszart ebbe – ő csak filmezni szeretett volna, és ennyi. Mára az FFmpeg már –szinte– mindent tud és visz. A szinte szó is csak a kukacoskodók kedvéért került ide, mert az ffmpeg mára annyira standarddá vált, hogy amit az ffmpeg nem visz, az egy halott projekt. Jelenleg 440 codecet és 301 konténert kezel. Most ne akarjátok, hogy ezeket név szerint felsoroljam, mert…mert hosszú lenne a cikk. Akit érdekel az elolvassa itt: http://ffmpeg.org/ffmpeg-codecs.html és itt: http://ffmpeg.org/ffmpeg-formats.html . (A konténerből való kipakolás hivatalos neve a demuxing, a bepakolás pedig a muxing.)
Az MPlayer egyébként ma már nevet váltott “The Movie Player“-re, mivel azóta van windows-os portja is, azonkívül OSX-re, Androidra, és még nagyon sokmindenre megjelent, és nagyon sokan beépítették, vagy egy-az-egyben felhasználták. http://mplayerhq.hu/design7/projects.html . Bár Árpi 2003-ban kiszállt az MPlayer fejleszteséből -azóta nem is fejlődött sokat-, azért a 10 éves évfordulóról ő is megemlékezett egy rövid levélkével:
Hi,
It was exactly 10 years ago, that I’ve released first MPlayer version, v0.01: http://www1.mplayerhq.hu/MPlayer/old_stuff/releases/MPlayer-0.01.tar.gz Yes, f*cking 10 years!!!! Nov 11, 2000… Time goes on so fast…
I want to thank you all for the contributions, patches, bugs, docs, testing etc. Especially Michael Niedermayer, Fabrice Bellard and Nick Kurshev, who made it to be the best & fastest open-source player!
And sorry Nick, I made a big mistake rejecting your multi-threaded patches. Unfortunatelly your idea came too early, nobody (at least me) thought that desktop PCs will ever have multiple CPUs… and now that even cheap notebooks and netbooks have multi-core CPUs, it would be very useful for HD playback…
Also special thanks to Gabucino, Pontscho and LGB, for your support in the early days, when everybody thought i’m mad, working on video player for linux…
A’rpi
ps: Albeu, i’ll never forgive your playtree patches 🙂
De még nincs teljesen vége a cikknek, hiába szeretnél már kommentelni…:-> Szóval az mplayer egy single thread, azaz egyszálú, azaz egy cpu magon (thread-en) futó player, aminek pont ez a különlegessége, hogy a lehető legkevesebb erőforrást használja. Ezt nagyon kedvelik az embedded (beágyazott) rendszerekben, így mivel arrafele nem 8magos cpu-kat szórnak, nagyon sok helyen mplayert használnak. Pl. a Samsung az összes okostévéjében ezzel játsza le a pendrive-odat, de a filmeket is ezzel veszi fel a upc settopboxod, és aztán játsza le újra. Nem lehet pontos listát találni, hogy mennyi helyen van mplayer, de mivel valóban ez a leggyorsabb szabadon felhasználható player, ezért a tévé- és egyéb kütyügyártók nem fektetnek energiát egy saját kifejlesztésébe – mert minek is? Ez visz mindent stabilan és kész. Szóval biztos te is találkoztál már az mplayer-rel, még ha nem is tudtál róla.
A többszálú forkja, ami a legjobban őrzi az mplayer kezelőfelületét és filozófiáját, az az mpv. Én is ezt használom már jóideje, úgy bő 15 év mplayer-ezés után. Tényleg kevés már az, hogy nem kezel több magot. :-< Akinek színes-szagos felület kell, annak ajánlom az SMplayer–t – nem kell kihangsúlyoznom, hogy mindent IS visz. De annyira, hogy még a facebook és youtube videokat is; elég csak az url-t megadni neki, és már szalad is a vidijó! Az mpv speciel most akar licenct váltani, és ehhez Árpi rábólintása is kell; itt ácsingóznak rá: https://github.com/mpv-player/mpv/issues/2033 , mert sok benne az mplayer kód.
És most a vlc-s huhogókhoz szóllanék: szerintetek a vlc-s csávó megírta magának az összes codecet? Vagy akár egyet is? A nagy lófasztot, csak hegesztett egy egerezős felületet egy jópofa logóval. A vlc is az ffmpeg-et használja, mint codec-library. Szóval ha vlc-ztek, akkor ffmpeg-eztek, és ha ffmpeg-eztek, akkor már majdnem mplayer-eztek. Noha mára az ffmpeg-ben az elmúlt 15 évben csak nagyon elvétve maradt benne módosítatlan Árpi kód, azért az alapjait és a filozófiát ő és Fabrice Bellard ketten tették le. Ha francia lennék, akkor bizonyára ő lenne a cikk fejlécében, és nem Árpi – dehát magyarok vagyunk, nem? :->
Jaés… az ffmpeg annyira szabvány manapság, hogy…szerintetek a youtube mivel konvertálja át a feltöltött videokat tetszőleges formátumból tetszőleges formátumba? És a facebook? És a vimeo? És az indavideo? Mivel csináltam a Wierd-es cikkembe az animgif-et? Lehet tippelgetni. De nem kell megállni a tippelgetésben, mert például a Firefox, vagy a Chrome vajon honnan építette be magába a video/audio képességet? Kitaláltátok: az ffmpeg-ből! Ma már csak nagyon elvétve lehet találni olyan médiasoftware-t, ami ne az ffmpeg-re épülne; de azoktól óvakodjatok, mert hátulgombolós idióták fejlesztik, akik a fésűt is fordítva ejtik bele a wc-be, ha egy ingyenes és kurvajó dolgot nem építettek be azonnal a projekt elején, vagy legalább menetközben!
Még annyit megjegyeznék -mert kihagytam, baszki, és nem tudom hova beszúrni-, hogy az mplayer-hez tartozik egy mencoder is, ami nem lejátszó, azaz dekódoló; hanem a fordítottja: egy enkódoló. Avagy elkódóló, konvertáló. Naon röviden: 2003-ben a Lucasarts emailben megkereste Árpit, hogy építsen már be egy-két számukra kedves funkciót a mencoder-be, mert ezzel csinálják a régi Star Wars trilógia remastered dvd-ket, és most ezért nem akarnak külön programozókat megfizetni, hogy nyúlkáljanak a kódba. Árpi megcsinálta –> érkezett a párezer dolláros csekk. Ma már ez nem nagy szó, mert a mencoder helyét az ffmpeg vette át ~10-szer több feature-rel, és már az számít kuriózumnak, ha valami nem ffmpeg-gel készül. Sz’al ennyire menő és újító volt akkoriban az mplayer/mencoder páros. Természetesen ezekben az években a warezcsapatok is átálltak már mencoder-re, így aztán pláne sohatöbbet nem jelentkezett az a probléma, hogy egy dvdrip-et ne vinne az mplayer – hiszen pont vele lett elkódolva! ;->
Minden cikk végén legyen valami jó,
Nesztek itt van egy régi Árpi-demo!
(…amit mplayer-rel nézni jó!)