Ako funguje oCompress
Čo sa deje, keď pretiahnete súbor, ako si overiť, že sa nič nenahráva, a čo naozaj znamená bezstratová a stratová kompresia.
Stručne
Keď otvoríte stránku s nástrojom, prehliadač stiahne stránku a malý program, kompresor. Keď pridáte súbor, prehliadač ho prečíta, kompresor ho spracuje na vašom vlastnom procesore a výsledok dostanete späť ako súbor na stiahnutie. Súbor sa ani raz neodošle cez sieť. Celý proces vyzerá takto:
- Načítanie. Najprv sa načíta stránka a rozhranie nástroja. Modul pre daný typ súborov (obrázky, video a zvuk alebo dokumenty) sa stiahne až vtedy, keď pridáte zodpovedajúci súbor, takže nikdy nesťahujete kód, ktorý nepoužijete.
- Čítanie. Prehliadač sprístupní stránke presne tie súbory, ktoré ste vybrali, a nič iné vo vašom zariadení.
- Kompresia. Práca beží vo Web Workeri, vlákne prehliadača na pozadí, takže stránka zostáva pohotová a kompresiu môžete kedykoľvek zrušiť.
- Uloženie. Skomprimovaný súbor vznikne v pamäti (veľké videá v súkromnom úložisku prehliadača) a uloží sa bežným sťahovaním v prehliadači, po jednom alebo ako ZIP.
Čo beží vo vašom prehliadači
Moderné prehliadače dokážu cez WebAssembly spúšťať skompilovaný kód takmer natívnou rýchlosťou a cez rozhranie nazývané WebCodecs sprístupňujú webovým stránkam hardvérové video enkodéry zariadenia. oCompress využíva oboje:
- Obrázky: MozJPEG pre JPEG, OxiPNG a kvantizér palety pre PNG, enkodér WebP z knižnice libwebp od Googlu, libavif pre AVIF, SVGO pre SVG a samostatné dekodéry a enkodéry pre GIF a TIFF. Kodeky JPEG, PNG, WebP a AVIF sú skompilované do WebAssembly.
- Video a zvuk: WebCodecs s knižnicou Mediabunny na čítanie a zápis kontajnerov, ako sú MP4 a WebM. Kódovanie podľa možnosti využíva hardvérový enkodér vášho grafického čipu, a preto môže byť rýchle aj v prehliadači. Súbory MP3 zapisuje enkodér LAME a súbory FLAC knižnica libFLAC, obe skompilované do WebAssembly a načítané len v prípade potreby.
- Dokumenty: náš vlastný kód postavený na open-source knižniciach pre PDF a ZIP otvára súbory PDF a Office, prekomprimuje v nich obrázky obrázkovými kodekmi a zapíše nový súbor.
Každá knižnica, ktorú dodávame, je open source: väčšina pod voľnými licenciami ako MIT, BSD a Apache 2.0, Mediabunny pod licenciou MPL 2.0 a enkodér MP3 LAME pod licenciou LGPL ako samostatný, nahraditeľný súbor. Pozrite si zoznam knižníc s verziami a licenciami.
Ako si overiť, že sa nič nenahráva
Nemusíte nám veriť na slovo. Stačia dva jednoduché testy:
- Prejdite do režimu offline. Otvorte stránku s nástrojom, skomprimujte jeden súbor, aby sa načítal modul, potom vypnite Wi-Fi alebo mobilné dáta a skomprimujte ďalší súbor rovnakého typu. Funguje to, pretože nič nepotrebuje sieť.
- Sledujte sieť. V Chrome, Edge alebo Firefoxe stlačte F12, otvorte kartu Sieť (Network) a skomprimujte súbor. Uvidíte, ako sa z našej stránky načítava kód kompresora, a požiadavky analytiky a reklám, ale žiadnu požiadavku s vaším súborom. Fotka s veľkosťou 10 MB by sa ukázala ako 10 MB nahrávanie; žiadne také nie je.
Stránka posiela do Google Analytics anonymné udalosti o používaní, napríklad „skomprimoval sa JPG s veľkosťou niekoľkých megabajtov“. Tieto udalosti obsahujú nástroj, typ súboru a veľkosť, úsporu a čas spracovania ako hrubé rozsahy, nikdy nie názov súboru ani jeho obsah.
Bezstratová kompresia: rovnaký obsah, menej bajtov
Bezstratová kompresia hľadá nadbytočnosť, teda veci, ktoré sú uložené viackrát alebo sa dajú predpovedať, a zapisuje ich kompaktnejšie. Dekódovanie tento proces presne obráti. Takmer v každom bezstratovom formáte sa objavujú tri myšlienky:
- Predikcia. Susedné pixely v obrázku alebo po sebe idúce vzorky zvuku sú zvyčajne podobné. Ak sa namiesto celej hodnoty uloží malý rozdiel oproti predpovedi, zostanú čísla väčšinou blízke nule. Takto fungujú filtre PNG a lineárny prediktor FLAC.
- Opakovanie. Opakované sekvencie sa nahradia krátkym odkazom na skoršiu kópiu. To je časť LZ77 algoritmu DEFLATE, ktorý sa používa v ZIP, PNG a súboroch Office.
- Entropické kódovanie. Časté hodnoty dostanú krátke kódy a zriedkavé dlhé (Huffmanovo alebo aritmetické kódovanie).
Bezstratová kompresia má prirodzenú hranicu: náhodný šum sa nedá predpovedať, takže zrnitá fotka alebo zašumená nahrávka sa bez straty nikdy veľmi nezmenší. Preto aj kompresia súboru, ktorý už je skomprimovaný, napríklad JPEG v ZIP, neušetrí takmer nič.
Stratová kompresia: odstránenie toho, čo vám nebude chýbať
Stratové kodeky idú ďalej a zahadzujú informácie, ktoré ľudské oči a uši takmer nevnímajú. JPEG a WebP ukladajú farbu v nižšom rozlíšení než jas a zaokrúhlením odstraňujú jemné vysokofrekvenčné detaily. MP3, AAC a Opus vynechávajú zvuky prekryté hlasnejšími. Video kodeky ako H.264 občas uložia celý obrázok a medzi tým hlavne pohyb a zmeny.
Nastavenie kvality alebo dátového toku rozhoduje o tom, koľko sa zahodí. Pri miernych nastaveniach je strata veľmi ťažko postrehnuteľná; ak to preženiete, objavia sa typické artefakty: kocky a svätožiary v obrázkoch, kovový zvuk „ako pod vodou“ v zvuku, rozmazanie v rýchlych scénach videa.
Čo nástroje sľubujú a čo nie
- Nikdy nedostanete väčší súbor. Ak výsledok nie je menší, nástroj vráti originál a oznámi vám, že je už optimálny.
- Dokumenty a zvukové súbory dávajú pri rovnakom súbore a nastaveniach identické bajty; hardvérové video enkodéry sa medzi jednotlivými spusteniami môžu líšiť o pár bajtov.
- Text v dokumentoch zostáva textom; strany sa nikdy nemenia na obrázky.
- Metadáta obrázkov, napríklad poloha GPS, sa predvolene odstraňujú, kým farebný profil a otočenie sa zachovajú. Predvolene sa odstraňujú aj metadáta videa, ako sú poloha, zariadenie a dátumy; zvuk si ponechá značky a obal, pokiaľ to nevypnete.
Čo sľúbiť nemôžeme, je konkrétne percento. Úspora úplne závisí od toho, ako súbor vznikol: fotka z telefónu alebo naskenované PDF má zvyčajne veľa priestoru, už optimalizovaný súbor málo. Nástroj pri každom súbore ukáže presnú veľkosť pred a po.
Limity kompresie v prehliadači
Karta prehliadača je izolované prostredie s obmedzenou pamäťou, a to určuje hranice toho, čo je prakticky možné. Nástroj prijme obrázky do 200 MB a 100 megapixelov, súbory PDF a Office do 300 MB a video a zvuk do 4 GB v počítači (1 GB v telefónoch), hoci dlhé 4K videá sa do pamäte karty aj tak nemusia zmestiť. Rýchlosť závisí od vášho hardvéru: v našich testoch na rýchlom počítači s Windows v Chrome trvala minúta videa 1080p asi 20 sekúnd a 24-megapixelová fotka asi 2,5 sekundy; telefóny môžu byť oveľa pomalšie. Video a väčšina prevodov zvuku potrebuje WebCodecs, ktoré ponúkajú aktuálne Chrome, Edge, Opera, Firefox 130+ a Safari 26+; WAV a AIFF sa dajú previesť na MP3, FLAC alebo WAV aj bez nich.
Niekoľko formátov nemá v prehliadačoch vôbec dekodér, napríklad WMA, AVI a WMV, a staré binárne súbory Office sa nedajú bezpečne prepísať. Pri nich nástroj vysvetlí možnosti, namiesto toho aby vytvoril súbor, ktorý by mohol byť poškodený. Keď je úloha na prehliadač priveľká, poctivým odporúčaním je desktopový program, napríklad HandBrake pre video alebo LibreOffice pre dokumenty.