Jak funguje oCompress
Co se stane, když přetáhnete soubor, jak si ověříte, že se nic nenahrává, a co doopravdy znamená bezeztrátová a ztrátová komprese.
Ve zkratce
Když otevřete stránku s nástrojem, prohlížeč stáhne stránku a malý program, kompresor. Když přidáte soubor, prohlížeč ho přečte, kompresor ho zpracuje na vašem vlastním procesoru a výsledek vám předá ke stažení. Soubor se v žádném okamžiku neposílá po síti. Celý proces vypadá takto:
- Načtení. Nejdřív se načte stránka a rozhraní nástroje. Kompresor pro daný typ souborů (obrázky, video a zvuk, nebo dokumenty) se stáhne teprve ve chvíli, kdy přidáte odpovídající soubor, takže nikdy nestahujete kód, který nepoužijete.
- Čtení. Prohlížeč dá stránce přístup přesně k souborům, které jste vybrali, a k ničemu jinému ve vašem zařízení.
- Komprese. Práce běží ve Web Workeru, vlákně prohlížeče na pozadí, takže stránka dál reaguje a kdykoli můžete akci zrušit.
- Uložení. Zkomprimovaný soubor vznikne v paměti (velká videa v soukromém úložišti prohlížeče) a uloží se běžným stahováním prohlížeče, jednotlivě nebo jako ZIP.
Co běží ve vašem prohlížeči
Moderní prohlížeče umí díky WebAssembly spouštět zkompilovaný kód téměř nativní rychlostí a přes rozhraní zvané WebCodecs dávají webovým stránkám přístup k hardwarovým video enkodérům zařízení. oCompress využívá obojí:
- Obrázky: MozJPEG pro JPEG, OxiPNG a kvantizér palety pro PNG, enkodér WebP z knihovny libwebp od Googlu, libavif pro AVIF, SVGO pro SVG a specializované dekodéry a enkodéry pro GIF a TIFF. Kodeky JPEG, PNG, WebP a AVIF jsou zkompilované do WebAssembly.
- Video a zvuk: WebCodecs s knihovnou Mediabunny pro čtení a zápis kontejnerů jako MP4 a WebM. Kódování využívá hardwarový enkodér vašeho grafického čipu, pokud je k dispozici, a proto může být rychlé i v prohlížeči. Soubory MP3 zapisuje enkodér LAME a soubory FLAC knihovna libFLAC, obojí zkompilované do WebAssembly a načítané jen v případě potřeby.
- Dokumenty: náš vlastní kód postavený na open-source knihovnách pro PDF a ZIP otevře soubory PDF a Office, znovu zkomprimuje obrázky uvnitř pomocí obrazových kodeků a zapíše nový soubor.
Každá knihovna, kterou dodáváme, je open source: většina pod permisivními licencemi jako MIT, BSD a Apache 2.0, Mediabunny pod MPL 2.0 a enkodér MP3 LAME pod LGPL jako samostatný, nahraditelný soubor. Podívejte se na seznam knihoven s verzemi a licencemi.
Jak si ověřit, že se nic nenahrává
Nemusíte nám věřit na slovo. Stačí dva jednoduché testy:
- Přejděte do režimu offline. Otevřete stránku s nástrojem, zkomprimujte jeden soubor, aby se načetl kompresor, pak vypněte Wi-Fi nebo mobilní data a zkomprimujte další soubor stejného typu. Funguje to, protože nic nepotřebuje síť.
- Sledujte síť. V Chromu, Edgi nebo Firefoxu stiskněte F12, otevřete kartu Síť a zkomprimujte soubor. Uvidíte načítání kódu kompresoru z našeho webu a požadavky analytiky a reklam, ale žádný požadavek, který by nesl váš soubor. Fotka o 10 MB by se objevila jako nahrávání 10 MB; žádné takové tam není.
Stránka posílá do Google Analytics anonymní události o používání, například „byl zkomprimován JPG o velikosti několika megabajtů“. Tyto události obsahují nástroj, typ souboru a velikost, úsporu a dobu zpracování v hrubých rozmezích, nikdy název souboru ani jeho obsah.
Bezeztrátová komprese: stejný obsah, méně bajtů
Bezeztrátová komprese hledá nadbytečnost, tedy věci, které jsou uložené vícekrát nebo které lze předpovědět, a zapisuje je úsporněji. Dekódování tento proces přesně obrátí. V téměř každém bezeztrátovém formátu se objevují tři myšlenky:
- Predikce. Sousední pixely v obrázku nebo po sobě jdoucí vzorky zvuku si bývají podobné. Když se místo celé hodnoty uloží malý rozdíl od předpovědi, zůstanou čísla, která jsou většinou blízko nuly. Takto fungují filtry PNG i lineární prediktor ve FLAC.
- Opakování. Opakované sekvence se nahradí krátkým odkazem na dřívější kopii. To je část LZ77 algoritmu DEFLATE, používaného v ZIP, PNG a souborech Office.
- Entropické kódování. Časté hodnoty dostanou krátké kódy a vzácné dlouhé (Huffmanovo nebo aritmetické kódování).
Bezeztrátová komprese má přirozenou mez: náhodný šum nejde předpovědět, takže zrnitá fotka nebo zašuměná nahrávka se bez ztráty nikdy výrazně nezmenší. Proto také komprese už zkomprimovaného souboru, například JPEG uvnitř ZIP, neušetří téměř nic.
Ztrátová komprese: odstranění toho, co vám chybět nebude
Ztrátové kodeky jdou dál a zahazují informace, které lidské oko a ucho sotva vnímají. JPEG a WebP ukládají barvy v nižším rozlišení než jas a jemné vysokofrekvenční detaily zaokrouhlí pryč. MP3, AAC a Opus vypouštějí zvuky překryté hlasitějšími. Videokodeky jako H.264 občas uloží jeden celý obrázek a mezi nimi hlavně pohyb a změny.
Nastavení kvality nebo datového toku rozhoduje, kolik se zahodí. Při střídmém nastavení je ztráta velmi těžko postřehnutelná; když to přeženete, objeví se typické artefakty: kostičky a svatozáře v obrázcích, kovový zvuk nebo zvuk „jako pod vodou“ u zvuku, rozmazání v rychlých scénách videa.
Co nástroje slibují a co ne
- Nikdy nedostanete větší soubor. Pokud výsledek není menší, nástroj vrátí originál a oznámí vám, že je už optimální.
- Dokumenty a zvukové soubory dávají pro stejný soubor a nastavení identické bajty; hardwarové video enkodéry se mohou mezi běhy lišit o pár bajtů.
- Text v dokumentech zůstává textem; stránky se nikdy nemění na obrázky.
- Metadata obrázků, jako je poloha GPS, se ve výchozím nastavení odstraňují, zatímco barevný profil a otočení se zachovají. Metadata videa, jako je poloha, zařízení a datum, se ve výchozím nastavení odstraňují také; zvuk si ponechá tagy a obal, pokud to nevypnete.
Co slíbit nemůžeme, je konkrétní procento. Úspora závisí čistě na tom, jak soubor vznikl: fotka z telefonu nebo naskenované PDF má obvykle spoustu prostoru, soubor, který už byl optimalizován, jen málo. Nástroj u každého souboru ukazuje přesnou velikost před a po.
Meze komprese v prohlížeči
Karta prohlížeče je izolované prostředí s omezenou pamětí, a to určuje hranice toho, co je prakticky možné. Nástroj přijme obrázky do 200 MB a 100 megapixelů, soubory PDF a Office do 300 MB a video a zvuk do 4 GB na počítači (1 GB na telefonech), i když dlouhá videa ve 4K se do paměti karty přesto vejít nemusí. Rychlost závisí na vašem hardwaru: v našich testech na rychlém počítači s Windows v Chromu trvala minuta videa 1080p asi 20 sekund a fotka s 24 megapixely asi 2,5 sekundy; telefony mohou být mnohem pomalejší. Video a většina převodů zvuku potřebuje WebCodecs, které nabízejí aktuální Chrome, Edge, Opera, Firefox 130+ a Safari 26+; WAV a AIFF lze převést na MP3, FLAC nebo WAV i bez nich.
Několik formátů nemá v prohlížečích dekodér vůbec, například WMA, AVI a WMV, a staré binární soubory Office nejde bezpečně přepsat. U nich nástroj vysvětlí možnosti, místo aby vytvořil soubor, který by mohl být poškozený. Když je úloha na prohlížeč příliš velká, poctivým doporučením je desktopový program, například HandBrake pro video nebo LibreOffice pro dokumenty.