VI. el adás: Szöveges és média fájlformátumok 2012. október 12.
Fájlformátumok Minden fájl egy bájtsorozat. Honnan tudja a gép, hogy egy bájtsorozattal mit csináljon? Pontos szabályrendszerekre van szükségünk, ami leírja, hogy a bájtsorozat hogyan értelmezend. Ezek a szabályok a fájlformátumok.
Szövegkódolás Talán a legegyszer bb példák fájlformátumra az írott, formázatlan szöveg tárolására szolgáló formátumok. De már itt is felmerül jónéhány kérdés, és sokféle megoldás lehetséges. Kezdetnek nézzük meg az egyetlen bet tárolására szolgáló formátumokat, mint épít köveket.
Karakterkódolás Szedjük össze, hogy hányféle karakterre lenne szükségünk! Ehhez hány bit kell? Az USA-ban 1963-ban úgy ítélték meg, hogy elég lesz 7 bit. Ebb l elég sok baj származik még ma is.
ASCII tábla
8 bites kódtáblázatok Tehát van egy kódtáblázatunk (eddig ASCII (American Standard Code for Information Interchange)), ami megadja, hogy egy számhoz milyen karakter tartozik. Szükség lenne helyre további karaktereknek. Logikus megoldás: használjuk a bájt mind a 8 bitjét. Így 256-féle karaktert tárolhatunk. Ilyenek az ISO kódtáblák (ISO = nemzetközi szabvány).
ISO Latin 1 - Nyugat-Európa
ISO Latin 2 - Közép-Európa
ISO Cirill - bolgár, szerb, orosz, ukrán, macedón
Miért látunk néha hullámos Õ-t Ž helyett? Ha a számítógép nem tudja, hogy egy szöveget tartalmazó bájtsorozat kódolása ASCII, Latin 1, Latin 2, vagy valami más, akkor bajban van. Ha lát egy 245-ös bájtot, mit fog megjeleníteni?
Unicode Mára már nem elfogadható (bár még el fordul), ha mondjuk egy program képtelen a magyar -t vagy a cirill bet ket értelmezni, tárolni, kezelni. Belenyugszunk, hogy nem elég egy bájt. Ha egy bet több bájtot is foglalhat, akkor akárhányféle bet t tárolhatunk. Az Unicode szabvány célja a Föld összes különböz bet jének a felsorolása. UTF-8 (Universal Character Set Transformation Format 8-bit) kódolás: a bet knek rövid (1-4 hosszú) bájtsorozatokat feletetünk meg. Az angol bet k továbbra is ugyanazt az egy bájtos kódot kapják, mint 1963-ban az ASCII-tól. De a többiek több bájtosat. Például az á kódja a 195 161 (ez két bájt).
Formázatlan szöveg Ha a szöveget egyszer en valamelyik fenti módon kódolt bet k sorozataként tároljuk, akkor formázatlan szövegr l beszélünk. Egy nagyon kicsit azért ez is formázott, hiszen a 32 a szóköz (space) karakter, és a 10 és a 13 az új sor kezdésének kódszámai. A karakter szót azért használtuk a bet szó helyett, hogy jelezzük, hogy bet n kívül szám, írásjel, szóköz, újsor, és több más szimbólum is szerepelhet itt. A formázatlan szöveget tartalmazó fájlok hagyományosan txt kiterjesztés ek.
Formázott szöveg Formázatlan szöveg nem képes azt az információt hordozni, hogy hogyan jelenik meg a szöveg. Ilyen információ például a tipográai, például: d lt bet vastag bet aláhúzás bet méret..és tördelési, például: sorkizárás középre igazítás A formázott szöveget kezel formátumok többsége képek beillesztését is lehet vé teszi.
Formázott szöveg Mindenképpen szükségünk van egy megjelenít programra. Ha ez egybeesik a szerkeszt progammal, akkor WYSIWYG, what you see is what you get szerkeszt r l beszélünk. Példa: wikipedia szerkeszt, Microsoft Word. Léteznek csak gép által kezelhet formátumok (doc),...és ember által is olvasható és szerkeszthet formátumok (html). Ez szubjektív és folytonos skála (például: rtf, docx).
Formátumok - MS Word doc Microsoft Word formátum, doc. Az egyik legelterjedtebb fájlformátum formázott szöveg tárolására. Ember által nem olvasható formátum. El állításához és megjelenítéséhez a Microsoft Word programra van szükség (vagy más olyan szövegszerkeszt re, amely többé-kevésbé képes kezelni a formátumot, például LibreOce, OpenOce). A nem Microsoft által írott programok számára nehéz az értelmezése, mert a Microsoft nem ad ehhez elegend tájékoztatást.
Formátumok - MS Word docx A Microsoft Word 2007 óta az alapértelmezett formátum a MS Word-ben a docx. Az egyik legelterjedtebb fájlformátum formázott szöveg tárolására. Ember által olvasható formátum (visszanyerhet bel le a szöveges tartalom), csak egy kicsit dolgozni kell érte: ha átnevezzük.zip kiterjesztésér a.docx állományt, akkor egy a.zip formátumot kezelni képes tömörít programmal ki lehet csomagolni a tartalmát, és a különböz formázási és egyéb utasításokat és meghatározásokat tartalmazó állományok mellett megtaláljuk a tényleges szöveget tartalmazó állományt, amelyet böngész vel vagy csak szöveget tartalmazó fájlok megnyitására alkalmas szövegszerkeszt vel is megnézhetünk. El állításához és megjelenítéséhez olyan szövegszerkeszt re van szükség, amely képes kezelni a formátumot, például MS Word, LibreOce, OpenOce.
Formátumok - pdf pdf (Portable Document Format): Ember által nem szerkeszthet formátum formázott szövegek és ábrák megjelenítésére. El állításához és megjelenítéséhez a doc-hoz és a docx-hez hasonlóan speciális programokra van szükség. Fontos tulajdonsága, hogy a doc és docx formátumokkal szemben egészen pontosan rögzíti a bet k és ábrák formáját és elrendezését: egy pdf dokumentum két különböz számítógépen kinyomtatva ugyanúgy fog kinézni mindkett n, ami doc és docx esetében nem mindig igaz. További különbség a doc formátumhoz képest, hogy a kódolás szabályrendszere teljesen nyilvános, tehát bárki írhat pdf-megjelenít vagy szerkeszt programot.
Formátumok - html Hypertext Markup Language, html. Ember által is szerkeszthet formátum. A célja az adatok megjelenítésmódjának leírása és nem az adatok deniálása (ez utóbbi az XML alapvet célja) A weboldalak meghatározó formátuma, ezért a webböngész els dleges feladata html adatok értelmezése és megjelenítése. (Ugyanakkor a böngész nek nem feladata html formátumú adatok szerkesztése.) Speciális szöveges jelölésrendszer (markup) segítségével sokféle tipográai és tördelési információt hordozhat.
HTML szerkesztés
Multimédia tömörítés alapelvei képek hangok mozgóképek
Bitmap (rasztergraka) és RGB színkeverés Kép forrása: https://secure.wikimedia.org/wikipedia/ en/wiki/raster_graphics Minden pixel külön deniálva, ezért hívják pixelgrakának is Az RGB színskálát alkalmazva az egyes pixelek színét a piros, zöld és kék színek összegeként deniáljuk (például 24bit RGB esetén egy-egy bájt adja meg a piros, zöld és kék színek értékét)
Képek - tömörítés Pixelekb l álló kép tárolásához a pixelek színeit kell feljegyezni. De különböz trükköket használunk arra, hogy kisebb helyen eltárolhassuk ezeket. Például: Grakák, rajzok - kihasználhatjuk, hogy kevés színük van. Fotók - kihasználhatjuk, hogy kis változtatások nem felt n ek.
Tömörítés: alapötlet Egy fájlban lehetnek szabályszer ségek. Két egyszer példa: 1. példa: valami egymás után sokszor ismétl dik. 2. példa: valami gyakran fordul el, nem okvetlenül egymás után. A szabályszer ségeket ki tudom használni arra, hogy ugyanazt az információt kisebb helyen tárolhassam, mint az eredeti fájl.
Tömörítés: 1. példa A fájlban ezer nulla áll egymás után. Ekkor rövidebb eltárolni, hogy "itt most ezer nulla következik egymás után", mint magukat a nullákat. Ezt felhasználhatom tömörítésre.
Tömörítés: 1. példa (képekre alkalmazva) Tegyük fel, hogy 256x256-os fekete-fehér képeket akarok eltárolni. Tömörítetlenül ez 256x256 bitet igényel, ami 8192 bájt. A példa kedvéért tegyük fel, hogy a képeim mind fehér alapon fekete köröket ábrázolnak. Hogyan tudom ezt kihasználni tömörítésre?
Tömörítés: 1. példa (képekre alkalmazva) A kép minden egyes sorát tekintsük úgy, mint fekete és fehér csíkok egymásutánja. Például: "A sorban balról jobbra haladva el ször van 130 fehér pixel, aztán 16 fekete pixel, aztán 110 fehér pixel." Hogyan lesz ebb l fájlformátum? Minden egyszín csíkot eltárolhatok 9 biten: Nyolc bit a csík hossza (1-256), egy bit a színe (fekete/fehér). Egy 256x256-os fehér alapon fekete kör tárolása ezen a módon. Hány bájt? Soronként 5x9 bit: 256x45 bit, 1440 bájt. Egy pepita kép tárolása ezen a módon. Hány bájt? Soronként 256x9 bit, vagyis összesen 256x256x9 bit, 73728 bájt. Ez most nem érte meg.
Tömörítés: 2. példa Tegyük fel, hogy egy szövegben gyakori az E bet. (Magyar szövegekben valóban gyakori.) Ekkor kevesebb biten is eltárolhatjuk a szöveget, pontosan azon az elven, mint a Morse-ábécében, ahol az E egyetlen ponttal van kódolva, míg a ritkább Q bet néggyel (- -. -). Miben különbözik a bináris eset a Morse ábécét l? Hogy ott igaziból háromféle jel van: vessz, pont és szünet. Akkor hogyan is kell ezt pontosan megoldani?
Egy kis elmélet Mi történik, ha egy olyan fájlt próbálunk meg tömöríteni, amiben semmi szabályszer ség sincs? Nem lesz rajta tömörítenivaló, így nem lesz kisebb. De a legrosszabb esetben is fenntarthatjuk a fájlformátumunkban azt az esetet, hogy ha a "tömörítetlen:" bájtsorozat után ott áll az eredeti állomány tartalma, akkor azt értelmezzük bet r l bet re. Tehát a jó tömörítés sem mindig tömörít, de legrosszabb esetben is csak kicsivel növeli a méretet.
Egy kis elmélet II. Mi egy tipikus példa tömöríthetetlen fájlra? Egy már tömörített állományon általában már nincs mit tovább tömöríteni: ha jó a tömörít nk, akkor már els re is kifacsarta a tömörítési lehet ségeket. Ha egy tömörítési módszer minden állományt képes lenne tömöríteni, akkor ismételt alkalmazásával el bb-utóbb mindenb l egybájtos fájlt tömöríthetnénk, ami képtelenség. (Ennek ellenére id r l id re emberek azzal próbálnak pénzt kicsalni befektet kb l, hogy azt állítják, hogy feltalálták a minden fájlt tömöríteni képes programot.)
Veszteségmentes tömörítés a gyakorlatban A most bemutatott elveken alapulnak a tömörít eljárások, mint például a zip és rar. A tömörít tehát olyan program, amely egy fájlból egy olyan (remélhet leg kisebb) tömörített fájlt hoz létre, amib l aztán egy kitömörít program képes pontosan visszaállítani az eredeti fájlt. A tömörített fájlt gyorsabban továbbíthatjuk, illetve kisebb helyen tárolhatjuk, mint az eredetit, de ha vissza akarjuk kapni az eredetit, akkor szükségünk van a kitömörít programra. A zip nyílt formátumnak számítana, de nem felel meg teljes mértékben a nyílt formátumokkal szemben támasztott követelményeknek. Megjegyzés: praktikus okokból a zip és rar fájlformátumok képesek több fájl tömörítve való tárolására is. Kitömörítéskor válaszhatunk, hogy mindet, vagy csak néhányat állítjuk helyre. A tömör fájlt hagyományosan archívumnak nevezzük.
Veszteséges tömörítés Veszteséges tömörítés: Ha képet vagy hangot továbbítunk, akkor nem okoz végzetes problémát, ha néhány pixel színe kicsit megváltozik a képen, vagy a hang az emberi fül számára nem hallható módon megváltozik. Ezen az elven alapulnak a veszteséges tömörít eljárások: Lényegében keresnek egy olyan jelet, amely a tömörítend jelhez a felhasználó szempontjából hasonlít (úgy néz ki, úgy hangzik), de annál szabályosabb, jobban tömöríthet.
Paletta Ha csak 256 különböz színt használnánk egy képen, akkor egy pixel színe 1 bájtot foglalhatna 3 helyett, mert az RGB bájtok helyett az tárolhatnánk, hogy a szín hanyadik a palettán. és plusz még 3x256 bájt lenne magának a palettának a tárolása. Így körülbelül harmadannyi bájt kellene egy nagy kép tárolásához.
gif tömörítés Palettát alkalmaz a gif veszteséges képtömörítés is: El ször okos módszerekkel kitalálja, hogy mik a legfontosabb szinek, és a palettán nem szerepl színeket a palettán szerepl hasonló színekkel helyettesíti, lebutítva a képet. Aztán a pixelenként már csak egybájtos fájlt veszteségmentesen tömöríti. A kitömörítés értelemszer : a helyettesített színeket nem kapjuk vissza.
gif eredeti kép kép gif formátumban
jpeg tömörítés Fénykép tömörítésénél kihasználhatjuk, hogy a képen általában sok hasonló ismétl d részlet van. Például a kék ég, vagy az út aszfaltja. Ha egy részlet több helyen is felbukkan hasonló formában, akkor csak egyszer tároljuk, de eltároljuk azt is, hogy az egyes példányok miben térnek el az alapváltozattól. A jpeg tömörítésnél ezek a kis részletek konkrétan 8x8 pixeles négyzetecskék. Ha a tömörítés mértékét növelni akarjuk, akkor az alapváltozat négyzett l való eltérést csak nagyjából, pontatlanul tároljuk. A következ képet kinagyítva gyeljük meg mindhárom képen a négyzetecskéket!
jpeg tömörítés
jpeg tömörítés 99%, 133,9 kb 30%, 17,1 kb 10%, 8,3 kb 1%, 4,0 kb
Vektorgraka ellipse(50,50,25,25); is egy kép, egy ellipszist deniál Vektorgrakus kép: a kirajzolás receptjét adjuk meg, és nem a pixeleket. Cserébe: akármilyen min ség, akármilyen nagyítás, anélkül, hogy a kép kockás (pixeles) lenne. Bet k formájának leírásához is vektorgrakát alkalmaznak, tehát a bet k körvonalának íveit tárolják. A pdf szövegformátum vektorgrakusan eltárolja a bet k formáját, így éri el, hogy minden gépen pontosan ugyanúgy jelenik meg a szöveg.
Vektorgraka: egy g bet közelr l
Különbség bitmap (rasztergraka) és vektorgraka között Kép forrása: https://secure.wikimedia.org/wikipedia/ en/wiki/vector_graphics
Tömörítetlen hang Hogyan tárolhatunk egy hangot számítógéppel? Például ugyanúgy, ahogy CD-n. És ott hogyan tároljuk? A hangszóró membránja (avagy a lemezjátszó t je) ritmikus mozgást végez. Ezt az id függvényében ábrázolva egy jellegzetes függvénygörbét kapunk. Másodpercenként 44,100-szor feljegyezzük a függvényértéket. Az értéket egész számmal kódoljuk két bájton (-32768 és 32767 között). Ha sztereó a hang, akkor a fentieket mindkét csatornára el kell végeznünk.
Tömörítetlen hang II. Mi történik, ha a függvénygörbét függ leges irányban kétszeresére nyújtjuk? Kétszer hangosabb lesz a hang. Mi történik, ha a függvénygörbét vízszintes irányban kétszeresére nyújtjuk? Kétszer (egy oktávval) mélyebb lesz a hang. Mi történik, ha két függvényt összeadunk? Az eredmény azt adja, mintha a két hang egyszerre szólna.
Igény a tömörítésre Ha a függvényt leíró bájtsorozatot sorfolytonosan tároljuk, akkor lényegében megkaptuk a.wav hangformátumot. De másodpercenként 44100x2x2 bájt nagyon sok. (mai gyorsabb otthoni internet-kapcsolat) Hogyan lehetne takarékoskodni?
Tömörített hang A hang magassága (némi leegyszer sítéssel) azzal függ össze, hogy a membrán másodpercenként hányszor van alsó állásban. Ha sokszor, az magas hang. Ha másodpercenként 25,000-nél többször, akkor azt már nem is halljuk. mp3 tömörítés: Változtassuk meg a hangot úgy, hogy a különbség ne legyen hallható, de simábbá tegye a hang-görbét, hogy jobban lehessen tömöríteni. Tizedére csökkenti a méretet elfogadható szint min ségromlás mellett. A tömörítés mértéke többféleképpen beállítható, az alig élvezhet pici fájltól az eredetit l szinte megkülönböztethetetlen nagy fájlig.
Veszteségmentesen tömörített hang Veszteség-mentesen is lehet tömöríteni a hangadatokat, bár ez ritkán szükséges. Ha ezt a f leg szövegdokumentumokra kitalált zip és rar módszerekkel végezzük, akkor nem tömörítenek túl sokat, mert nem vesznek észre túl sok szabályszer séget. De például a ac tömörítés a szabályszer ségek keresésekor gyelembe veszi, hogy hanggal van dolga. Körülbelül harmadára csökkenti a méretet bármiféle veszteség nélkül.
Tömörített mozgókép Ha mozgóképet akarunk tömöríteni, akkor sokkal nagyobb adatmennyiséggel van dolgunk, mint állóképeknél, de a pontatlanságok kevésbé felt n ek. Ezért ezt szinte mindig veszteségesen tömörítjük. Ugyanazokat a trükköket alkalmazhatjuk, mint állóképnél (jpeg), tehát ismétl d kis részleteket keresünk,...de itt segít az is, hogy a képkocka általában hasonlít az el z höz,...pontosabban fogalmazva egyes részleteinek hasonmásai gyakran eltolva megtalálhatók az id ben közel es képkockák valamelyikén.
Gyakorlati tudnivalók multimédia fájlokról Csatorna: Multimédia jel. (hang, mozgókép, szöveg) Kodek: Jel tömörítési módja. Konténer: Fájl, amiben egy vagy több multimédia jel van szinkronizálva. A tömörítés módja csatornánként meg van adva a fájlban. Példák konténerekre: avi, mov. Példa: Az egyik avi kiterjesztés fájlomban három csatorna van: Egy DivX kodekkel tömörített mozgókép. Egy mp3-mal tömörített hangcsatorna. Egy tömörítetlen lmfelirat. Ezek képkocka pontossággal szinkronizálva vannak egymáshoz.