Instrukcja kompresji Divx4 w programie VirtualDub

Autor: Mike

Pojawienie się kodeka Divx4 umożliwia kompresję filmów o wysokiej jakości obrazu, nawet początkującym użytkownikom, których odstrasza skomplikowany proces kompresji za pomocą techniki SBC w programie Nandub.
Nowy kodek zapewnia podobną jakość do SBC, pod warunkiem wykonania dwóch przebiegów. Analogicznie jak w SBC, pierwszy przebieg polega na ocenie kompresowalności filmu i zapisaniu odpowiednich danych, które kodek wykorzysta podczas właściwej kompresji, aby optymalnie dobrać strumień do potrzeb kodowanej sceny.

Do kompresji użyjemy VirtualDub (dział download), który w razie potrzeby umożliwia również stosowanie filtrów (np. do oczyszczenia obrazu).

Najnowsze wersje kodeka Divx4 można ściągnąć z działu Download, lub strony www.divx.com

Instrukcja kodowania Divx 2-pass w VirtualDub składa się z następujących etapów:

1. Zgranie płyty DVD na dysk
2. Wyliczenie bitrate dla filmu
3. Uruchomienie frameservera DVD2AVI/VFAPI
4. Dobranie rozdzielczości - filtr "resize" i "crop"
5. Kompresja

Po zakończeniu kompresji otrzymamy plik AVI z obrazem, do którego należy dołączyć dźwięk (można wykorzystać np. metodę konwersji Dolby Digital do Dolby Surround opisaną dziale kompresji dźwięku).

Jeśli znalazłeś jakieś błędy w instrukcji, lub chciałbyś wysłać komentarz lub dodatkowe informacje, proszę o informację na Forum.


1. Zgranie płyty DVD na dysk


Do zgrania VOBów z filmem na dysk używamy np. popularnego SmartRippera (dział download).

Po włożeniu płyty DVD i włączeniu SmartRippera nastąpi autoryzowanie płyty.
Po chwili powinno pojawić się główne okno programu:


Wybieramy tryb "Movie" i z menu "angles" wybieramy strumień z filmem (o odpowiednim czasie trawania zgodnym z długością filmu). Następnie wybieramy katalog docelowy i klikamy na "Start". Po kilkunastu-kilkudziesięciu minutach (zależnie od szybkości napędu DVD, szybkości dysku i długości filmów) film zostanie zgrany na dysk. Możemy też użyć innego programu, np. DVDDecrypter'a (dział download).


2. Wyliczenie bitrate dla filmu

Teoretyczną wartość bitrate dla kompresji filmu możemy obliczyć za pomocą odpowiedniego kalkulatora, np. Divx4 Bitrate Calculator (dział download).

Można też szybko policzyć ją ręcznie:

Ustalamy wielkość pliku AVI (np. dla 2 x 700MB = 1400MB = 1400x1024 kB = 1433600 kB).
Dzielimy tą wartość przez długość filmu w sekundach (np. 120 min = 7200 sek).
Łączne bitrate dla obrazu i dźwięku wynosi więc 1433600/7200 = 199 kB/s = 199 x 8 kbps = 1593 kbps.).
Od tej wartości odejmujemy bitrate dla dźwięku (np. Dolby Digital 384kbps): 1593 - 384 kbps = 1209 kbps i otrzymujemy wartość bitrate dla samego obrazu.

UWAGA: Divx4 do wersji 4.01 zakładał, że 1 kbps = 1000 bps (a nie 1024 bps), więc otrzymaną wartość należy pomnożyć przez 1.024.
Od wersji 4.02 wzwyż, ponownie 1 kbps = 1024 bps, więc dodatkowe przeliczenia nie są potrzebne (jednak należy zwrócić uwagę, czy uzywamy kalkulatora dostosowanego do konkretnej wersji kodeka Divx4!).

3. Uruchomienie frameservera DVD2AVI/VFAPI

Aby dostarczyć strumień MPEG2 do VirtualDub należy skorzystać z "frameservera", czyli programu tworzącego tymczasowy plik AVI poprzez który enkoder może pobierać dane do właściwej kompresji.
Wykorzystamy do tego program DVD2AVI (dział download).

Po uruchomieniu DVD2AVI wybieramy opcję "File/Open", następnie zaznaczamy odpowiednie VOB'y z filmem i klikamy na "OK":



Następnie wyłączamy obsługę Audio, ponieważ dźwięk dołączymy dopiero po kompresji obrazu:



Ponieważ będziemy kompresować filmy PAL nie musimy ustawiać dodatkowych opcji. W przypadku posiadania płyty DVD zapisanej w NTSC należy poszukać dodatkowych informacji na temat usuwania przeplotu za pomocą IVTC, np. na stronie www.doom9.org

Z menu File wybieramy funkcję "Save Project" i zapisujemy plik z rozszerzeniem d2v. Gdy plik d2v zostanie utworzony (trwa to od kilku do kilkunastu minut), można zamknąć program DVD2AVI.

Następnym krokiem jest zainstalowanie kodeka VFAPI (dział download). Należy rozpakować zip, wejść do katalogu "Codec" i klikając prawym klawiszem myszy na pliku vifp.inf wybrać opcję "zainstaluj".

Po instalacji kodeka uruchamiamy program VFAPIConv-EN.exe:



Klikamy na "Add Job" i wskazujemy plik d2v utworzony przez DVD2AVI. Powinno pojawić się okienko potwierdzające wczytanie pliku - klikamy na "OK" i na koniec uruchamiamy VFAPI funkcją "Convert", po zakończeniu również możemy zamknąć program.


4. Dobranie rozdzielczości - filtr "resize" i "crop"

Uruchamiamy VirtualDub i wczytujemy tymczasowy plik avi utworzony przez VFAPI.

1. W menu Video zaznaczamy "Full Processing Mode" i kilkamy na "Filters". Pojawi się okienko z wyborem filtrów:



2. Kilkamy na Add i wybieramy filtr Resize i wpisujemy rozdzielczość na odpowiednią dla danego formatu filmu, na przykład:

- dla filmu o proporcjach 2.35:1 (najwęższy) - 640 x 272
- dla filmu o proporcjach 1.85:1 (średni) - 640 x 352
- dla filmu o proporcjach 4:3 (pełnoekranowe) - 512 x 384


Dla dłuższych filmów, które chcielibyśmy zmieścić na 1CD warto wybrać niższą rozdzielczość od wyżej wymienionych. Niewielka utrata ostrości będzie o wiele mniej przeszkadzać, niż makrobloki przy ruchu. Do obliczania rozdzielczości przydatny jest kalkulator "Gordian Knot" za pomocą którego łatwo dobierzemy parametry dla odpowiedniego formatu obrazu.

Więcej informacji na ten temat znajduje sie w artykule o doborze odpowiedniej rozdzielczości dla Divx.


3. W polu "filter" mode wybieramy "Precise Bicubic" (gdy zależy nam na dużej ostrości) lub "Precise Bilinear" (mniejsza ostrość niż bicubic, ale lepiej się kompresuje - zalecane przy 'zaszumionych' źródłach). Jeżeli masz wątpliwości - zajrzyj do działu testów i przeczytaj porównanie pomiędzy filtrami bilinear i bicubic.

Klikamy na OK i wybieramy opcję "Cropping":



Ustawiamy pasek przewijania w dowolnym miejscu filmu, gdzie wyraźnie widać czarne paski u dołu i u góry (jeśli film jest pełnoekranowy lub anamorficzny 1.85 - nie ma potrzeby używać funkcji Cropping). Następnie za pomocą opcji Y1 Offset i Y2 Offset usuwamy czarne pasy. Jeżeli jest taka konieczność, usuwamy też wąskie paski po bokach (X1 Offset i X2 Offset). Ustawienia te warto zapamiętać, bo trzeba je będzie ustawić w drugim przebiegu.

Następnie klikamy na OK i wychodzimy z menu filtrów.


5. Kompresja

W zależności od tego, czy chcemy wykonac naraz dwa przebiegi, czy też osobno kompresować 1-st pass i 2-nd pass, możemy wybrać jeden z dwóch poniższych wartiantów:

Wariant I - osobna kompresja 1-st pass i 2-nd pass:

Etap I - Generowanie statystyk:

Po ustawieniu filtrów "resize" i "crop" wchodzimy do menu Video/Compression, wybieramy kodek Divx 4.xx Codec i kilkamy na "Configure".
Wybieramy w opcjach kodeka tryb 2 pass, first pass, wpisujemy obliczone bitrate i ewentualnie zmieniamy inne parametry - np. zalecane Min i max quantizer na 2 i 6 (patrz: szczegółowy opis poniżej).

W menu Video zaznaczamy Full processing mode, w menu Audio: No audio i Direct Stream Copy.

Klikamy na Save AVI... i czekamy na utworzenie pliku ze statystykami.

Etap II - Kompresja filmu

Wybieramy w opcjach kodeka tryb 2 pass, second pass. W menu Log file powinien być wybrany plik ze statystykami 1-st pass.

Klikamy na Save AVI... i czekamy na utworzenie właściwego pliku AVI.

Po zakończeniu kompresji pozostaje przygotowanie dźwięku, opisane osobno w dziale artykułów.


Wariant II - kompresja 1-st pass i 2-nd pass za jednym razem

Postępujemy identycznie jak powyżej, z tym że w etapie pierwszym, po wybraniu nazwy pliku w Save AVI zaznaczamy poniżej opcję "Add operation to job list and defer processing". Następnie przechodzimy do etapu drugiego, zaznaczając tryb 2 pass, second pass. Następnie wchodzimy do menu Save AVI, ponownie wskazujemy plik AVI, zaznaczając opcję "Add operation to job list and defer processing".

W ten sposób utworzyliśmy skrypt, który po wykonaniu pierwszego przebiegu automatycznie zacznie właściwą kompresję AVI. Aby uruchomić cały proces, wchodzimy do menu File / Job control i klikamy na Start. Po zakończeniu kompresji powinniśmy otrzymać gotowy plik AVI. Instrukcja kompresji ścieżki dźwiękowej, znajdziesz w dziale "Kompresja dźwięku"


OPIS PARAMETRÓW KODEKA




Oto szczegółowy opis parametrów, które mają istotny wpływ na działanie kodeka:




I. Sekcja "General Parameters"

1. Variable bitrate mode - tutaj wybieramy tryb kodowania. Do wyboru mamy:

- 1 pass: najprostszy tryb, podobnie jak w Divx3 podczas kompresji kodek stara się utrzymać strumień jak najbliżej zadanego średniego bitrate i automatycznie dobiera współczynniki kompresji klatki (DRF). Przedział DRF można zawęzić za pomocą opisanych poniżej parametrów minimum i maximum quantizer, co daje podobne efekty jak kodowanie jednoprzebiegowe w Nandub.

- 1 pass, Quality Based: jest to tryb w którym kodek stara się utrzymać zadany poziom jakości Encoding quality, podany w procentach. Nie mamy wtedy wpływu na inne parametry, takie jak bitrate czy poziom DRF, a każda klatka zostaje skompresowana proporcjonalnie do ustalonego poziomu jakości. Tryb ten wymaga jeszcze eksperymentów, ponieważ pojawił się niedawno, wraz z nową wersją kodeka.

- 2 pass, first pass: Analogicznie jak w SBC, tryb 1-st pass ma na celu utworzenie pliku z danymi statystycznymi dotyczącymi kompresji. Po zaznaczeniu tej opcji otrzymamy bezużyteczny plik AVI, oraz plik ze statystykami (ścieżkę do pliku należy podać w okienku Two-pass encoding parameters w Log File).

- 2 pass, second pass: jest to etap właściwej kompresji pliku AVI. Aby go przeprowadzić, musimy posiadać plik ze statystykami. (Plik ten może być wykonany w pierwszym przebiegu, lub pozyskany w inny sposób, np. ściągnięty z sieci).



2. Performance / Quality: Jest to ustawienie pozwalające wybrać pomiędzy szybkością, a jakością kompresji. Dla regularnego kodowania zaleca się ustawienie Slowest, natomiast tryb Fastest może się przydać do przechwytywania i kompresji "w locie", ale wyłączony jest wtedy mechanizm detekcji zmian scen.

3. Output video bitstream: tutaj wpisujemy obliczoną wartość bitrate (uwaga: Divx4 zakłada, że 1 kbit = 1000 bit - patrz punkt 2 instrukcji).

4. Maximum keyframe interval: Ponieważ Divx4 ma wbudowany mechanizm VKI, parametr ten sluży jedynie do ustalenia maksymalnego przedziału między dwiema klatkami kluczowymi, co ma wpływ głównie na szybkość przewijania filmu 'na podglądzie'.

5. Max CPU usage: parametr, za pomocą którego ustalamy dopuszczalne obciążenie CPU podczas kompresji. Większość enkoderów posiada możliwość ustalenia priorytetu dla kompresji, więc parametr ten jest mało użyteczny.

6. Deinterlace: kodek posiada wbudowany filtr usuwający przeplot, ale jego efektywność jest ograniczona, dlatego zaleca się użycie zewnętrznych filtrów w VirtualDub.


II. Decoding parameters:

1. Default postprocessing level: za pomocą tego parametru możemy wymusić poziom filtrowania obrazu podczas odtwarzania skompresowanego filmu. Post-processing w Divx4 działa analogicznie jak CPU-Quality w kodeku Divx3, czyli rozmywa widoczne 'kwadraty', zmiejszając nieznacznie ostrość obrazu.


III. 1st-pass encoding parameters:

Quantizers: Są to poziomy kompresji, znane z Nandub jako DRF. Wpływają one na jakość kodowanego obrazu. Im niższy współczynnik, tym lepsza jakość, ale większa objętość klatki. Mają one największy wpływ na rozmiar pliku po kompresji.

- Minimum quantizer: jest to najmniejszy poziom kompresji dla klatki. Najniższą i zalecaną wartością jest 2. Jeżeli zależy nam na jakości scen statycznych nie powinniśmy zwiększać tej wartości, w przeciwnym wypidku w scenach statycznych mogą pojawić się widoczne makrobloki.

- Maximum quantizer: jest to najwyższy poziom kompresji dla klatki. Tutaj wybór jest trudniejszy - zbyt niska wartość zapewni doskonałą jakość, ale rozmiar pliku AVI może się znacznie powiększyć. Sugerowana wartość to 6, można ją nieznacznie zwiększyć w przypadku kompresji jednopłytowych.

- Rate control averaging period: określa przedział jaki kodek bierze pod uwagę do ustalenia bitrate dla kodowanej klatki. Jeżeli poprzednie klatki zużyły zbyt dużo strumienia, kodek musi odrobić straty na kolejnych klatkach, aby utrzymać średnią wartość bitrate. Domyślna wartość 2000 wydaje się sprawdzać w większości wypadków.

- Rate control reaction period: określa szybkość reakcji kodeka na zmianę charakteru scen, podobnie jak smoother w Nandub. Dokładniej: parametr ten wpływa na fluktuację współczynników kompresji DRF w zależności od zmian następujących w klatkach (kodek bierze pod uwagę wartość complexity zapisaną w statystykach). Zalecana jest domyślna wartość 10.

- Rate control up/down reaction: parametr ten wpływa na rozpoznanie wartości motion danej klatki. Im mniejsza wartość, tym mechanizm będzie bardziej czuły, co może doprowadzić do nadmiernego zużycia bitów (ponieważ kodek straci zdolność rozpoznania wymagających scen). Zalecana jest domyślna wartość 20.


  »  Wprowadzenie do kompresji Divx
  »  Konfiguracja kodeka Divx 5
  »  Instrukcja kompresji Divx4 w programie VirtualDub
  »  Formaty obrazu i dobór rozdzielczości
  »  Metody uzyskania najlepszej jakości dźwięku
  »  Łączenie obrazu i dźwięku w VirtualDub
  »  Instrukcja kompresji Divx5 w programie VirtualDub
  »  Kompresja VCD w programie TMPGEnc
  »  Jakość obrazu w kompresji Divx
  »  Konfiguracja Virtualdub
Copyright © 1999-2003 DivX.PL Group

http://www.hal.trzepak.net/faq/winxp/faqxp.html -strona główna FAQ XP