Homepage » hogyan kell » Hogyan működik a fájltömörítés?

    Hogyan működik a fájltömörítés?

    A szoftvermérnökök mindig új módszereket fejlesztettek ki, hogy egy csomó helyre illeszkedjenek sok adat. Igaz volt, amikor a merevlemezeink apróak voltak, és az internet megjelenése most még kritikusabbá tette. A fájltömörítés nagy szerepet játszik abban, hogy összekapcsoljon minket, így kevesebb adatot küldünk a sorba, így gyorsabb letöltéseket és több kapcsolatot tudunk elérni a forgalmas hálózatokra.

    Szóval hogyan működik?

    A kérdés megválaszolásához néhány nagyon bonyolult matematika magyarázata lenne, minden bizonnyal több, mint amennyit a cikk fedezhet, de nem kell pontosan megértenie, hogyan működik matematikailag, hogy megértse az alapokat.

    A szövegek tömörítésére a legnépszerűbb könyvtárak két tömörítési algoritmusra támaszkodnak, mindkettőt egyszerre használva a nagyon nagy tömörítési arányok eléréséhez. Ezek a két algoritmus az „LZ77” és a „Huffman kódolás”. A Huffman kódolása meglehetősen bonyolult, és itt nem fogunk részletesen foglalkozni. Először rövidebb hozzárendeléshez használ egy kis mesterséges matematikát bináris kódok az egyes betűkre, a fájl méretének csökkenése a folyamatban. Ha többet szeretne megtudni róla, nézze meg ezt a cikket a kód működéséről, vagy ezt a Computerphile magyarázóját.

    Az LZ77 viszont viszonylag egyszerű, és erről beszélünk. Törli a kettős szavakat, és kicseréli őket egy kisebb „kulcs” -ra, amely a szót képviseli.

    Vegyük például ezt a rövid szöveget:

    Az LZ77 algoritmus megvizsgálná ezt a szöveget, rájött, hogy háromszor megismétli a „howtogeek” -t, és megváltoztatja ezt:

    Aztán, ha vissza akarja olvasni a szöveget, minden (h) példányt helyettesít a „howtogeek” -re, és visszahívja az eredeti mondatot.

    Ezt a „veszteség nélküli” tömörítést nevezzük - a behelyezett adatok megegyeznek azokkal az adatokkal, amelyeket kijutsz. Semmi sem veszett el.

    A valóságban az LZ77 nem használja a kulcsok listáját, hanem helyettesíti a második és harmadik előfordulást a memóriában lévő hivatkozással:

    Tehát most, amikor eléri a (h) -et, visszanéz a "howtogeek" -re, és ezt olvassa el.

    Ha érdekli a részletesebb magyarázat, ez a videó a Computerphile-től nagyon hasznos.

    Most ez egy idealizált példa. A valóságban a legtöbb szöveg csak néhány karakterből álló kulcsokkal van tömörítve. Például a „the” szó akkor is tömörülne, ha az „ott”, „azok” és „akkor” szavakban jelenik meg. Ismétlődő szöveggel néhány őrült tömörítési arányt kaphat. Ezt a szöveges fájlt a „howtogeek” szóval ismételje meg 100 alkalommal. Az eredeti szövegfájl három kilobájt méretű. Ha tömörített, ez csak 158 bájtot vesz igénybe. Ez közel 95% -os tömörítés.

    Nyilvánvalóan ez egy nagyon szélsőséges példa, hiszen ugyanaz a szó ismételten megismétlődött. Általános gyakorlatban valószínűleg körülbelül 30-40% -os tömörítést fog elérni egy olyan tömörítési formátummal, mint a ZIP, olyan fájlban, amely többnyire szöveges.

    Ez az LZ77 algoritmus minden bináris adatra vonatkozik, egyébként nem csak szövegre, bár a szöveg általában könnyebben tömöríthető a legtöbb nyelv által használt ismételt szavak miatt. Egy olyan nyelv, mint a kínai, kicsit nehezebben tömöríthető, mint például az angol.

    Hogyan működik a kép és a videó tömörítése?

    A videó és audio tömörítés nagyon másképp működik. Eltérően a szövegtől, ahol veszteségmentes tömörítés érhető el, és az adatok nem veszítenek el, a képeken „Lossy Compression” -et kapunk, ahol néhány adatot elveszítenek. Minél többet tömörít, annál több adatot veszít el.

    Ez az, ami azokhoz a borzalmas kinézetű JPEG-ekhez vezet, amelyeket az emberek többször feltöltöttek, megosztottak és screenshotoltak. Minden alkalommal, amikor a kép tömörül, elveszít néhány adatot.

    Íme egy példa. Ez egy kép, amit egyáltalán nem tömörítettem.

    Ezután átvettem a képernyőt, és többször futtattam a Photoshopon keresztül, minden alkalommal, amikor alacsony minőségű JPEG-ként exportáltam. Íme az eredmény.

    Nagyon rossznak tűnik?

    Nos, ez csak egy legrosszabb forgatókönyv, minden alkalommal 0% JPEG minőségben exportálva. Összehasonlításképpen, itt van egy 50% -os minőségű JPEG, ami szinte megkülönböztethetetlen a forrás PNG-képétől, kivéve, ha felrobbantja és közelebbről megnézi.

    Ennek a képnek a PNG-je 200 KB volt, de ez az 50% -os minőségű JPEG csak 28 KB.

    Szóval hogyan takarít meg annyi hely? Nos, a JPEG-algoritmus a mérnöki feladat. A legtöbb kép tárolja a számok listáját, és minden egyes szám egy pixelt képvisel.

    A JPEG ezt nem teszi meg. Ehelyett tárolja a képeket valamilyen diszkrét kozin transzformációval, amely a különböző szinusz hullámok összegyűjtése különböző intenzitásokkal. 64 különböző egyenletet használ, de ezek többsége nem kerül felhasználásra. Ez az, amit a Photoshopban lévő JPEG minőségi csúszka és más képalkalmazások választanak ki, hogy hány egyenletet kell használni. Az alkalmazások ezután a Huffman kódolást használják a fájlméret további csökkentésére.

    Ez a JPEG-ek számára rendkívül magas tömörítési arányt ad, ami a minőségtől függően csökkentheti a több megabájt értékű fájlt néhány kilobájt értékre. Természetesen, ha túl sokat használ, akkor ezzel végül:

    Ez a kép szörnyű. A kisebb méretű JPEG tömörítés azonban jelentős hatást gyakorolhat a fájlméretre, és ez nagyon hasznos lehet a JPEG weboldalak tömörítésére. A legtöbb online megjelenített kép tömörítve van a letöltési időkre történő mentéshez, különösen a rossz adatátvitelű mobil felhasználók számára. Valójában a How-To Geek összes képét tömörítették, hogy az oldalak betöltése gyorsabb legyen, és valószínűleg soha nem vettem észre.

    Videó tömörítés

    A videó kicsit másképp működik, mint a képek. Gondolod, hogy csak JPEG segítségével tömörítenék minden egyes képkockát, és biztosan ezt teszik, de jobb módja a videónak.

    Olyan „interframe tömörítés” néven használunk, amely kiszámítja az egyes keretek közötti változásokat és csak azokat tárolja. Például, ha van egy viszonylag csendes felvétel, amely néhány másodpercet vesz igénybe egy videóban, sok hely menthető el, mert a tömörítési algoritmusnak nem kell tárolnia az összes olyan dolgot, amely nem változik. Az interframe tömörítés a fő oka annak, hogy digitális TV-t és webes videót használunk. Enélkül a videók több száz gigabájtban lennének, ami meghaladja az átlagos merevlemez méretét 2005-ben, amikor a YouTube elindult.

    Továbbá, mivel az interframe tömörítés a legjobban helyhez kötött videóval működik, ezért konfetti tönkreteszi a videó minőségét.

    Megjegyzés: A GIF ezt nem teszi meg, ezért az animált GIF-ek gyakran nagyon rövidek és kicsiek, de még mindig elég nagy méretűek.

    Egy másik dolog, amit szem előtt kell tartani a videóról, az a bitráta, amely a másodpercenként megengedett adatmennyiség. Ha például a bitráta 200 kb / s, akkor a videó nagyon rossz lesz. A minőség emelkedik, ahogy a bitráta emelkedik, de néhány másodperces megabájt után csökken a visszatérés.

    Ez egy nagyított keret, amely egy medúza videójából készült. A bal oldalon 3Mb / s, a jobb oldalon pedig 100Mb / s.

    A fájlméret 30x-os növekedése, de nem a minőség növelése. Általában a YouTube-videók 2-10Mb / s körüli értéket tartalmaznak a kapcsolatod függvényében, mivel bármi más valószínűleg nem lenne észrevehető.

    Ez a bemutató jobban működik a tényleges videóval, így ha saját maga is szeretné megnézni, letöltheti ugyanazokat a bitráta teszt videókat, amelyeket itt használ..

    Audio tömörítés

    Az audió tömörítés nagyon hasonlít a szöveg és a kép tömörítésére. Ahol a JPEG eltávolítja a részleteket egy olyan képből, amelyet nem lát, a hangtömörítés ugyanaz a hang. Lehet, hogy nem kell hallanod a gitárvágást, ha a tényleges gitár sokkal, sokkal hangosabb.

    Az MP3 bitrátát is használ a 48 és 96 kbps (alacsony) végponttól a 128 és 240 kbps-ig (nagyon jó) 320kbps-ig (high-end audio), és valószínűleg csak a kivételesen jó fejhallgatóval fog hallani ( és fülek).

    Vannak veszteségmentes tömörítési kodekek az audio-a főbbek számára, amelyek FLAC-t használnak, és az LZ77 kódolást teljesen veszteségmentes hangszolgáltatáshoz használják. Vannak, akik a FLAC tökéletes hangminőségével esküsznek, de az MP3 elterjedtségével úgy tűnik, hogy a legtöbb ember nem tudja megmondani vagy nem bánni a különbséggel.