Kompresja danych

Każdy, kto przynajmniej od kilku miesięcy używa Internetu i często pobiera z sieci różnego typu dane, jak urzędowe dokumenty, przenośne wersje programów często styka się z nią nieświadomie. Użytkownicy początkujący, niewprawieni jeszcze w używaniu wyszukiwarki internetowej, bardzo często nie mają pojęcia, jak postąpić wobec pliku, który na stronie, z jakiej został pobrany określono jako plik skompresowany. Nie chce się on bowiem otworzyć w żadnym znanym im programie typu Word, Excel, a nawet, jeśli już uda się tego dokonać, to zamiast upragnionego dokumentu na ekranie pojawiają się rzędy cyfr, liter i innych znaków, z których z pozoru nie można złożyć logicznej całości. 
Pół biedy, gdy plik taki ma rozszerzenie Zip (poradzi z nim sobie odpowiednie systemowe narzędzie) lub gdy ktoś stworzył tzw. archiwum samorozpakowujące (SFX od ang. selfextracting), którego otwarcie również nie sprawi kłopotu. Co jednak, gdy rozszerzenie jest inne? Po co ktoś umieszcza w Internecie takie pliki? Kompresja jest dzisiaj standardem, używanym nie tylko w Internecie, choć w tym zastosowaniu najbardziej rzuca się w oczy.

RODZAJE KOMPRESJI

Możemy w tym miejscu dokonać podziału na dwa rodzaje kompresji:
? stratna, w której zmniejszenie objętości pakowanego pliku odbywa się kosztem danych, których po dekompresji nie można w żaden sposób odzyskać (metoda stosowana często przy zapisie muzyki w formatach stratnych jak MP3, OGG, MPC, AACPLUS itd), 
? bezstratna - tj. taka, gdzie zmniejszenie pliku nie ma wpływu na jego zawartość, a po dekompresji możliwe jest odzyskanie wszelkich danych oryginału (tę metodę wykorzystuje się podczas kompresowania programów, plików tekstowych, czy przy zapisie muzyki w audiofilskich formatach bezstratnych jak FLAC, WV, APE itd.).
Osoby pracujące z Pecetem od wielu lat, pamiętają zapewne, w jaki sposób radziły sobie z dużymi plikami, które trzeba było zapisać na dyskietce, podczas gdy jej rozmiar ledwo przekraczał 1MB.
To właśnie dzięki kompresorom, czyli programom zmniejszającym objętość danych można było skurczyć plik o rozmiarze 1,8 MB do 1 MB i w ten sposób zyskać wolne miejsce na dyskietce, lub, jeśli plik okazywał się zbyt duży, możliwe było utworzenie wieloczęściowego woluminu, w którym na każdej z dyskietek zapisywana zostawała inna część pliku. Gdy chciano zajrzeć do tego archiwum, wystarczyło włożyć do stacji dysków pierwszą z dyskietek, poczekać aż program wypakowujący (dekompresor) poprosi o kolejną i tak do końca operacji. Oczywiście było to długotrwałe i żmudne, w dodatku czasem kończyło się niepowodzeniem i wtedy wszystko należało wykonać od początku.

PO CO KOMPRESOWAĆ?

Dziś, w epoce kilkuterabajtowych dysków twardych, szybkich łączy internetowych oraz płyt DVD, takie rozwiązanie wydaje się nie mieć sensu, a jednak wciąż znajduje zastosowanie. Rosną bowiem nasze wymagania. Mimo że dyski twarde osiągają już rozmiary, o których kilkanaście lat temu nikt nawet nie śnił, wciąż są one w podobnym stopniu zapełnione. Oprogramowanie, filmy, muzyka potrzebują miejsca na dysku, aby je zaoszczędzić, warto użyć kompresji. Dzięki zmniejszeniu rozmiaru plików, możliwe jest ich szybsze przesłanie za pośrednictwem Internetu.

CZYM KOMPRESOWAĆ?

Oprogramowania zmniejszającego rozmiary plików jest bardzo wiele. Tworzą je firmy informatyczne, a także członkowie ruchu na rzecz wolnego oprogramowania. Możemy wykorzystać zarówno duże, jak na swoje możliwości, kilkumegabajtowe aplikacje lub skłonić się ku małym, niepozornym, kilkusetkilobajtowym narzędziom, których potęga i mnogość dostępnych funkcji drzemią w dzisiaj uważanym za gorszy czy trudniejszy interfejsie tekstowym.
Aby wykorzystać w pełni ich możliwości, wszystkie te programy wymagają jednak drobnej konfiguracji.
7ZIP
Jest to darmowa aplikacja, o publicznie dostępnym kodzie źródłowym, posiadająca zarówno w pełni funkcjonalną wersję o interfejsie graficznym, jaki odpowiednik konsolowy, (pracujący w trybie tekstowym) mający nieznacznie więcej możliwości. Potrafi kompresować pliki do własnego formatu 7Z oraz ZIP, czy BZ2, dekompresuje natomiast większość popularnych obecnie formatów archiwów.
Jest to jeden z tych programów, które co prawda ustępują komercyjnemu WinRARowi, jeśli chodzi o ilość dodatkowych funkcjonalność, lecz przewyższają go całkowicie pod względem rozmiaru pliku wynikowego.
Plik o rozmiarze 120 MB, złożony w całości z danych tekstowych, skompresowany WinRARem (przy użyciu najwyższych dostępnych parametrów) posiada rozmiar 54 MB. Użycie do tego celu 7zipa pozwala otrzymać plik wynikowy o rozmiarze 47 MB. Różnica będzie jeszcze bardziej widoczna, gdy plik przeznaczony do spakowania będzie mieć rozmiar np. 10 GB.
Aby stworzyć archiwum, należy przede wszystkim odpowiedzieć sobie na pytanie, w jakim celu chcemy to uczynić. Często bowiem kompresujemy nieefektywnie, chcąc spakować coś, co jest już spakowane. Nie ma więc sensu mocna kompresja plików typu JPG, PNG, MP3, OGG, itd, gdyż wysiłek, jaki zostanie włożony w całą operację zarówno z naszej strony, jaki ze strony obciążonego silnie procesora naszego komputera jest zupełnie niepotrzebny i nie pozwoli efektywnie zmniejszyć rozmiarów pliku. Jeśli zatem wiemy, że pliki, które chcemy zapakować są już skompresowane, lepiej pozostawić domyślne ustawienia lub stworzyć archiwum bez kompresji.
Mimo iż program 7zip należy do aplikacji bezpłatnych, użytkownik ma do dyspozycji wiele opcji kompresji danych. Zaliczyć do nich można m.in.:
? wybór formatu pliku skompresowanego (7Z, TAR lub ZIP) - najefektywniej opisywana tu aplikacja działa, używając własnego algorytmu, więc radzę wybrać format 7Z,
? stopień kompresji,
? metoda kompresji (zależna jest od wybranego przez nas wcześniej formatu pliku wynikowego),
? rozmiar słownika i słowa (im wyższe rozmiary słownika i słowa, tym większa efektywność kompresji),
? liczba wątków w procesorze (parametr użyteczny, gdy mamy do dyspozycji komputer z procesorem wielordzeniowym, i przyspieszający czas pakowania),
? szyfrowanie i zabezpieczenie hasłem,
? tworzenie archiwum samorozpakowującego się,
? tryb aktualizacji (dodawanie plików do już istniejących archiwów),
? rozmiar woluminów (parametr użyteczny, gdy chcemy podzielić wynik archiwizacji na kilka plików wynikowych, pozwalający na zdefiniowanie rozmiarów tychże plików).

TRYB TEKSTOWY - CZY ABY NAPEWNO PRZESTARZAŁY?

Tryb tekstowy, przez większość użytkowników niedoceniany, uważany jest za mało wydajny, trudny w obsłudze, a czasami wręcz przestarzały. Każdy jednak, kto zajmował się zaawansowaną administracją systemem Windows lub korzysta z wolnych systemów operacyjnych (np. Linux) wie, że to nie prawda.
Za przykład niech posłuży tutaj nowy, oparty na otwartej licencji, świetnie zapowiadający się kompresor danych o nazwie NanoZip, który można pobrać ze strony www.nanozip.net. Nie doczekał się on jak do tej pory wersji stabilnej, lecz mimo to już dziś można używać go bez obawy o utratę danych.
Wprawdzie twórca aplikacji przygotował również jej wersję graficzną, ale nie będziemy się nią tutaj szerzej zajmować ze względu na poważne problemy z jej dostępnością dla użytkowników niewidomych.
NanoZip nie posiada zaawansowanych opcji, ustawień rozmiarów słownika, nie potrafi tworzyć zaszyfrowanych archiwów, nie podzieli też go na części. Autor skupia się na zapewnieniu jak najbardziej wydajnej kompresji, tworząc własny format nz. Program jest obecnie dostępny w wersji Alfa, więc niewykluczone, że wkrótce te przydatne funkcje zostaną dodane.
Tym, co przemawia na korzyść omawianej aplikacji jest efektywność kompresji i możliwość tworzenia samorozpakowujących się archiwów.
Plik zawierający 2,67 MB danych tekstowych (w formacie DOC, XLS i TXT, a także tworzony za pomocą kodu języka C+), przy użyciu WinRARa i 7zipa skompresowany został do rozmiarów oscylujących wokół 500 KB przy najwyższych, dostępnych ustawieniach parametrów kompresji, natomiast NanoZip osiągnął taki rozmiar pliku wynikowego przy zastosowaniu domyślnych ustawień. Wspomniany plik testowy, po wstawieniu odpowiednich opcji programu skompresował do rozmiaru 340 KB. Różnica jest więc znacząca.
W przypadku większych plików, to małe, niepozorne narzędzie bije na głowę zarówno 7zipa, jaki WinRARa, kompresując plik o rozmiarze 460 MB do 240 MB, podczas gdy powyżej wspomniane programy uzyskiwały 370 i 390 MB.
Jedyną wadą NanoZipa i stosowanej przez niego metody kompresji jest potężna zasobożerność, zarówno podczas pakowania, jaki wypakowywania danych. Tym jednak, których to nie zraża i dla których liczy się głównie skuteczność kompresji, proponuję zapoznać się z tym ciekawym narzędziem, w czym na pewno pomoże rozbudowana pomoc, z której skorzystać możemy po wpisaniu komendy ?nz ?help?.

ARCHIWA MUZYCZNE

Mimo, że bezstratna kompresja dźwięku nie cieszy się dużą popularnością, warto wspomnieć i o tym obszarze, gdzie operacja zmniejszania zawartości danych ułatwi nam życie, pozwalając zarchiwizować naszą kolekcję płyt bez utraty jakości dźwięku, przy jednoczesnej oszczędności zajmowanego miejsca. Każdy bowiem, kto próbował zachować swoje płyty na dysku twardym, zgrywając je do formatu WAV, przekonał się, że kilka krążków, zapisanych w ten sposób, potrafi zająć sporo wolnego miejsca. Połowicznym rozwiązaniem problemu jest oczywiście użycie silnych pakerów danych, jak wspominany wyżej NanoZip, lecz zaznaczyłem wyżej, mocna kompresja zwykle oznacza potężne zużycie zasobów, a czas wykorzystany na dekompresję w sytuacji, gdy będziemy chcieli posłuchać tak spakowanej muzyki może wydłużyć się tak bardzo, że ochota na muzyczne doznania może już dawno minąć, zanim pliki zostaną rozpakowane. Problem rozwiązać można, używając tzw. kodeków bezstratnych.

FLAC

Free Lossless Audio Codec, to jak sama nazwa wskazuje, oparty jest na darmowej licencji (GPL). Można go pograć ze strony projektu www.flac.sf.net. Należy on do bezstratnych kodeków dźwięku. Jego działanie nie polega jednak na przetwarzaniu sygnału akustycznego jako takiego. Program nie wycina ze strumienia wejściowego żadnych danych. Zachowuje się, podobnie jak klasyczne kompresory, a więc traktuje poddane kodowaniu pliki w taki sposób, by możliwie zmniejszyć ich objętość. W tym wypadku narzędzie stworzono jednak specjalnie do pakowania plików audio, więc oprócz tradycyjnych funkcjonalności archiwizera, znajdziemy w nim kilka opcji typowych dla koderów muzyki (możliwość wstawiania tagów do archiwum, normalizację głośności itd.)
FLAC jest formatem wspieranym już przez wiele programów do zgrywania płyt (tzw. ripperów) oraz edytorów dźwięku (np. Goldwave). Dzięki temu, że jest pomyślany, jako format archiwów dla plików audio, istnieje możliwość natychmiastowego odtworzenia spakowanego pliku za pomocą odpowiednich pluginów do odtwarzaczy (niektóre playery wspierają nawet takie pliki bez konieczności podejmowania przez nas dodatkowych wysiłków i instalowania tzw. wtyczek). Zainteresowanych użytkowników odsyłam na stronę projektu, gdzie znajdą informacje na temat dodatkowych funkcjonalności aplikacji.

WAVPACK

Kolejnym archiwizerem dźwięku jest WavPack. Ten darmowy program mimo, iż cieszy się mniejszej popularnością, zasługuje na krótkie omówienie, ponieważ oferuje użytkownikom znacznie więcej niż FLAC.
Aplikację można pobrać ze strony projektu: www.wavpack.com. WavPack występuje w wersji dla Windows (konsolowa i graficzna) oraz Linuksa. Przede wszystkim WavPack łączy w sobie dwie użyteczne funkcje, może bowiem pracować w trybie bezstratnym, gdzie plik wynikowy poddawany jest jedynie kompresji bez ingerencji w sam dźwięk, oraz hybrydowym, w którym plik wynikowy kodowany jest stratnie. W trybie bezstratnym, WavPack wygrał przeprowadzony przez autora test trzech kompresorów dźwięku, w którym brały udział również: FLAC i Monkey?s Audio.
Pliki wynikowe kompresora zajmują średnio kilkanaście MB mniej, niż w przypadku wyżej wymienionych aplikacji. Do tego posiada wiele ciekawych opcji, m.in.: możliwość utworzenia samorozpakowującego się archiwum (użyteczne, gdy chcemy przesłać przez Internet wysokiej jakości dźwięk osobie nieposiadającej w swoim odtwarzaczu wsparcia dla tego formatu) oraz zdolność tworzenia plików korekcyjnych w trybie stratnym (do zakodowanego hybrydowo (stratnie) dźwięku, kodek dołącza plik, który zawiera informacje o danych usuniętych z oryginału, dzięki czemu możliwe jest przywrócenie pierwotnego brzmienia dekodowanego materiału).
Podczas pracy WavPack, nie zużywa wiele zasobów, choć kompresja trwa długo, co jednak nie powinno być uznawane za dyskwalifikujący argument w starciu z innymi kompresorami, gdyż np. w przypadku archiwizowania dużych plików programem FLAC, często zdarza się, że mimo dobrej klasy sprzętu komputerowego, nasz screenreader zamilknie na czas jej wykonywania. Jeżeli używamy WavPacka, raczej nie będzie to miało miejsca.
Choć aplikacja powoli dogania konkurencyjny FLAC, jej popularność wciąż jest mniejsza. Wynika to przede wszystkim z faktu, iż w przypadku większości znanych odtwarzaczy, aby móc posłuchać skompresowanej muzyki potrzeba dodatkowych pluginów. Jedynym znanym autorowi programowym odtwarzaczem wspierającym ten format jest Foobar 2000.
Podobnie sprawa przedstawia się dla osób chcących przechowywać pliki muzyczne na dysku twardym. Wiele programów służących do tego celu (tzw. ripperów), wciąż nie posiada wsparcia dla tego pakera. Należy go więc wybierać raczej jako dodatkową aplikację i korzystać z niej wtedy, gdy konieczne okaże się wykorzystanie jej unikalnych możliwości.

CO WYBRAĆ?

Kompresowanie danych, ma, jak widzimy, wiele zalet, a jego efektywne wykorzystanie w dużym stopniu pomoże nam w codziennym korzystaniu z Internetu i możliwości, jakie niesie. Przedstawione tutaj programy to tylko przykładowe narzędzia, używane często przez autora i, w jego opinii, osiągające wysokie wyniki w zakresie funkcjonalności. 
Każdy jednak może samodzielnie poszukać aplikacji, która w pełni zaspokoi jego potrzeby. W zakresie kompresji najlepszym źródłem wiedzy o przeznaczonych do tego narzędziach jest strona: http://www.compressionratings.com Znajdują się tam, szczegółowo opisane, testy rankingowe pakerów danych oraz całkiem spora baza oprogramowania wykonującego to, jak się okazuje niełatwe, zadanie.

Hubert Meyer

*Autor z tyfloinformatyką do czynienia ma od końca lat dziewięćdziesiątych, głównie w charakterze użytkownika. Zawsze stara się obiektywnie oceniać użytkowany sprzęt i oprogramowanie, a swoje opinie wyraża publicznie, co nie przysparza mu sympatyków wśród przedstawicieli branży tyfloinformatycznej. Jest autorem bloga poświęconego tzw. wolnej muzyce - www.netscena.rox.pl. Udziela się również w radiu Tyflostacja, w którym prowadzi cotygodniową audycję. Mieszka i studiuje w Poznaniu.

 

Projekt współfinansowany ze środków Państwowego Funduszu Rehabilitacji Osób Niepełnosprawnych oraz Gminy Miejskiej Kraków