Czy zastanawialiście się kiedyś dlaczego film z aparatu cyfrowego posiada monstrualne rozmiary? Wideo, które posłużyło mi do tego howto, miało rozmiar ponad 5MB, przy czym czas jego trwania to tylko 3 sekundy z groszami! Prawda, że nieźle? Porównajcie to teraz do 2-godzinnego filmu HD w rozdzielczości 1280×720 pikseli z dwiema ścieżkami dźwiękowymi 5.1, który zajmuje 4,5GB – przyznacie, że wspomniane 5MB na 3s filmu to przesada. Więc skąd aż taka różnica? W końcu jedno i drugie to popularne AVI – no właśnie – AVI to tylko kontener, nic poza opakowaniem. O rozmiarze pliku decyduje kodek, który w przypadku aparatu cyfrowego zazwyczaj zwie się MJPEG, natomiast audio kodowane jest do formatu PCM. Jak się już pewnie domyślacie, JPEG został stworzony do użycia ze statycznymi obrazami, dlatego kompresja filmu polegająca na zapisaniu w ciągu jednej sekundy 25 zdjęć nie jest dobrą metodą, a na tym właśnie polega zastosowany w aparatach MJPEG. Z kolei kodek audio (PCM) jest stosowany między innymi do zapisu dźwięku na płytach CD, gdzie kompresji po prostu nie ma.
Wróćmy teraz do wspomnianego filmu HD. Tutaj algorytm kompresji to h264 – w skrócie można go określić jako znacznie udoskonalony MPEG4 (do rodziny MPEG4 należą również szeroko znane Xvid oraz DivX). Właśnie ten kodek (h264), a właściwie jego implementację w postaci x264, wykorzystamy do zapisu obrazu.
Wszystkie programy, które będą nam potrzebne są darmowe a na dodatek na licencji GPL (otwarty kod źródłowy). Jedyną rzeczą nie-darmową, za to w roli drugoplanowej (całe szczęście!) jest Vista Total Szajse Premium Bug Pack Edition (wybaczcie, ale nic mniej badziewnego (xp) pod ręką nie miałem akurat).
Do edycji wideo wykorzystamy znakomity program VirtualDub, z kolei do kompresji wspomnianą już implementację kodeka h264 – x264.
Na początek linki do pobrania potrzebnych plików: VirtualDub 1.7.6 oraz kodek x264
Aby odtworzyć plik wynikowy będziemy potrzebować jakiś codec-pack, np. K-Lite w wersji Standard (jeśli jeszcze nie posiadamy w systemie).
Tak więc do dzieła!
Ściągamy i rozpakowujemy VirtualDub do dowolnego katalogu, następnie odpalamy VirtualDub.exe. Naszym oczom ukaże się główne okno programu. Otwieramy plik z filmem (w naszym wypadku krótkie 5MB AVI z aparatu) poprzez menu File > Open Video File lub po prostu używamy skrótu Ctrl-O. Po otwarciu widzimy podgląd załadowanego pliku źródłowego z lewej strony, oraz pliku wynikowego z prawej.
Teraz pora na przycięcie pliku, do czego wykorzystamy znaczniki początku i końca zaznaczenia (Mark in oraz Mark out). Przesuwamy się suwakiem w miejsce zaznaczenia, a następnie klikając w odpowiedni przycisk definiujemy początek bądź koniec zaznaczenia. Aby usunąć zaznaczony fragment pliku, wystarczy po prostu nacisnąć Delete.
Kolejnym krokiem są ustawienia audio oraz wideo. Oba menu wyglądają niemal identycznie. Jeśli chcemy w pełni przetwarzać (kompresować) któryś ze strumieni zaznaczamy Full processing mode, jeśli chcemy nasz strumień po prostu skopiować do pliku wynikowego, używamy Direct stream copy. Z kolei jeśli chcemy całkowicie pozbyć się ścieżki audio z pliku, wystarczy, że zaznaczymy opcję No audio. Czasami część audio pliku zajmuje tak niewiele, że kompresowanie jej do formatu mp3 nie ma sensu.
Ustawienia audio:
Ustawienia wideo:
Kolejnym krokiem jest wybór kodeka wideo – wskazujemy z menu opcję Video > Compression, wyświetli się okno wyboru kodeka wideo i jego opcji, które możemy podglądnąć poniżej. Warto kliknąć w konfiguracji x264 na Load Defaults, po czym dopiero wybrać z listy żądany sposób wyboru jakości. Jakość możemy wybierać na 2 sposoby – wpisując wymagany bitrate (jak na obrazku poniżej) bądź ustawiając współczynnik jakości (domyślne ustawienie). Warto poeksperymentować tutaj, by jeszcze bardziej zmniejszyć rozmiar pliku wynikowego, zmniejszając bitrate strumienia wideo. Resztę ustawień pozostawiamy bez zmian.
Można również zmniejszyć rozdzielczość wynikowego pliku (…lub ominąć ten krok pozostawiając wideo w normalnym rozmiarze i przejść do zapisu wynikowego pliku avi). Aby tego dokonać z menu Video wybieramy opcję Filters, a następnie Add aby dodać filtr. Z listy filtrów wybieramy resize i potwierdzamy:
Poniżej okno konfiguracji filtra resize, gdzie ustawiamy rozmiar pliku wynikowego na 50%, proporcje obrazu bez zmian w stosunku do pliku źródłowego, natomiast metoda skalowania to metoda sześcienna (bicubic):
Potwierdzamy i wychodzimy do głównego okna VirtualDub. Teraz obraz wynikowy (po prawej) powinien przyjąć mniejsze rozmiary. Aby zapisać nasz plik wybieramy z menu: File > Save as AVI bądź naciskamy F7. Wpisujemy nową nazwę pliku i zapisujemy nasz wynikowy plik.
Efekt? Było 5,7MB, jest 230KB! To 25 razy mniej! Używając niższego bitrate (bo 800kbit/s dla wideo 320×240 to spora przesada) można zyskać jeszcze więcej! :D
Mam nadzieję, że ktoś z Was skorzysta z tego howto. Pamiętajcie również, że oba wykorzystane programy są darmowe ( wolna licencja GPL) i zostały napisane przez programistów którzy poświęcili swój czas, by stworzyć darmową alternatywę dla drogich i ciężkich i często o wiele gorszych komercyjnych odpowiedników. Pamiętajcie również, że to tylko drobna część możliwości VirtualDub, który jest po prostu potężnym narzędziem – więcej na temat oraz jego wykorzystania znajdziecie między innymi na www.doom9.org – udanej lektury! ;)






[...] Odchudzamy wideo z cyfrówki ;) [...]
Przez: Nowe Howto! ;) « Jedno hobby, dwa nałogi… ;) w 30/01/2008
o 19:51
Świetny opis! Prawie żadnych problemów z zastosowaniem (warto dodać, żeby przed lub po rozpakowaniu VirtualDub’a zainstalować kodek x264). Długo szukałem takiego programu, ten do kompresji filmów z aparatów fotograficznych nadaje się idealnie. Co prawda, u mnie “siał” przebiciami filmu na pulpit [XP-HE], ale to jedyna uciążliwość.
Dobra robota!
Dzięki
Gedi
Przez: Gedi w 10/07/2008
o 15:16
Jeszcze jedno.
Ponieważ konwersję robiłem na maszynie wirtualnej, a efekty oglądałem pod linuksem, to nie zauważyłem że Winda ma problemy z tym formatem.
Więc tak jak w powyższym “how to” napisano, należy zainstalować K-Lite ale poza tym trzeba jeszcze włączyć (przez ffdvision? tak to się chyba nazywało?) obsługę kodeka h264 który po zainstalowaniu jest “disable”.
To by było chyba już wszystko.
Gedi
Przez: Gedi w 11/07/2008
o 09:40
Dziękuję za słowa uznania, miło wiedzieć, że jeszcze ktoś mógł skorzystać z tej metody :)
Do kompresji można użyć dowolnego innego kodeka (np. xvid czy divx) jednak h264 wydaje mi się najlepszym rozwiązaniem, z racji zaawansowania.
W nowszych k-lite codec pack obsługa h264/x264 włączona jest standardowo. h264 obsługuje również każdy nowy program do odtwarzania DVD/HD DVD, gdyż dla HD DVD jest to właśnie standardowy format kompresji.
Przez: karolad w 11/07/2008
o 21:09