Zdjęcia poklatkowe, czyli robimy film
Autor: Kamil Porembiński


Oglądając kanał Discovery często widzę ładne filmy, które w przyśpieszonym tempie pokazują burzę lub wschód słońca. Zainspirowany takimi obrazami postanowiłem wykorzystać po raz kolejny potęgę i możliwości jakie daje nam system Linux. Bez pomocy drogiego sprzętu możemy sami coś takiego zrobić wykorzystując tanie domowe sposoby by uzyskać efekt filmów zmontowanych ze zdjęć poklatkowcyh.

Troszkę teorii, czyli zdjęcia po klatkowe
Cała nasza zabawa z robieniem filmów sprowadzi się do zrobienia kilkuset a może kilku tysięcy zdjęć po klatkowych za pomocą nieruchomo stojącej kamery internetowej, aparatu fotograficznego lub takich narzędzi jak wget czy import. Naszym zadaniem będzie robienie zdjęć w określonych i stałych odstępach czasu, dzięki czemu będziemy mogli zaobserwować w przyśpieszonym tempie takie zjawiska jak wschód lub zachód słońca. Dzisiaj za pomocą wszelkiego rodzaju sprzętu i narzędzi zrobienie takich zdjęć i filmów jest dziecinnie proste i tanie. Kiedyś takie filmy robione były specjalnymi kamerami do zdjęć po klatkowych. Polecam każdemu obejrzeć film Koyaanisqatsi.Film nie ma klasycznej fabuły ani dialogów. Tworzą go obrazy przyrody pełne harmonii, zderzone z obrazami cywilizacji - pięknymi, ale pasującymi do wszystkich znaczeń słowa Koyaanisqatsi (które jest jedynym słowem wypowiadanym w filmie). Zastosowane są nietypowe ujęcia, tempo jest najczęściej przyspieszone bądź zwolnione, towarzyszy im muzyka autorstwa Philipa Glassa.

Jeżeli posiadamy aparat, który ma wbudowaną funkcję timelapse nie musimy się o nić martwić. Aparat sam zrobi takie zdjęcia a potem zmontuje z nich film. Niestety takie aparaty są nieczęsto spotykane oraz nasza zabawa jest ograniczona pojemnością karty.

Kluczowym elementem filmików jest odstęp czasu pomiędzy kolejnymi klatkami, a czas ten zależy od czasu trwania zjawiska jakie chcemy zekranizować oraz jak długi ma być film wynikowy. Jeżeli chcemy, aby nasz film był płynną animacją powinien on posiadać około 25 klatek na sekundę. Jeżeli będziemy filmować zjawiska, które trwają bardzo długo np. wschód słońca, zmiana pogody, pory dnia to odstęp między kolejnymi zdjęciami powinien być stosunkowo długi. Np. Jeżeli będziemy filmować niebo przez około 5 godzin i chcemy by nasz filmik wynikowy trwał około 30 sekund musimy zrobić 30 * 25 = 750 zdjęć. Zjawisko jakie będziemy filmować trwać będzie 5 * 60 * 60 = 18 000 sekund, z których musimy zrobić 750 zdjęć. Po podzieleniu 18 000 / 750 = 24 otrzymamy wynik świadczący o tym co ile sekund mamy robić jedno zdjęcie. Poniżej przedstawię odstępy między kolejnymi zdjęciami dla różnych zjawisk:

  • 1 - 60 sekund: Szybkie zjawiska. Zdjęcia ludzi, ruch na ulicy, topniejąca kostka lodu.
  • 30 - 300 sekund: Wschody i zachody słońca, zmieniający się obraz nieba, chmury.
  • 1 800 - 18 000 sekund: Zjawiska zachodzące bardzo powoli. Zmiana pór roku, wzrost roślin.

Z doświadczenia zalecam robie większej ilości zdjęć, ponieważ prościej będzie usunąć zbędne klatki niż dorobić brakujące części filmu.

Potrzebne narzędzia
CamoramaDo zabawy z animacją nie potrzebne będzie nam zbyt dużo rzeczy. Jeżeli nie mamy specjalnego aparatu z funkcją timelapse, to musimy zadowolić się kamerą internetową lub zwykłym aparatem. Jeżeli mamy kartę telewizyjną i aparat z wyjściem na TV możemy w ten sposób zrobić własną kamerę, z której będziemy dalej robić ujęcia. Częto aparatem można sterować poprzez port USB wraz z dostarczonym przez producenta oprogramowaniem. Jeżeli nie mamy takich urządzeń możemy pokusić się o zrobienie filmów z różnych kamer zamieszczonych w Internecie i dostępnych przez przeglądarki internetowe. Za pomocą specjalnych skryptów wydobędziemy zdjęcia jakie chcemy. Przyda nam się również jakieś stabilne podłoże dla naszego aparatu lub kamerki. Możemy pokusić się o kupno jakiegoś statywu.

Kolejną ważną rzeczą jaką musimy mieć jest sporo wolnego miejsca na dysku twardym. Ponieważ będziemy przechowywać ogromną ilość zdjęć musimy zapewnić im miejsce. Oczywiści wszystko zależy od jakości zdjęć jakie będziemy robić. Proponuję nie przesadzać z rozdzielczością zdjęć (chyba, że mamy super procesory i pojemne dyski). Ich rozdzielczość powinna mieścić się w granicach od 640 x 480 do 1024 x 768

Potrzebne będzie nam również posiadanie doskonałego i niezastąpionego pakietu MPlayer, a dokładniej programu mencoder, który potrafi prze konwertować obrazy w film wideo. Programy te dostępne są również pod systemy Windows. Instalacja program mencoder kończy się na wydaniu w popularnych dystrybucjach odpowiedniego polecenia. W Mandrivie korzystamy z urpmi:

[root@paszczak paszczak000]# urpmi mencoder 

Do robienia filmów naszego pulpitu za pomocą zdjęć po klatkowych przyda się program import. Powinien on być zainstalowany domyślnie w /usr/bin/import. Jeżeli go nie ma możemy zainstalować za pomocą menadżerów pakietów takich jak urpmi, emegre, apt-get, poldek dostępnych pod różnymi dystrybucjami.

Zdjęcia pulpitu - coś łatwego na początek
PulpitCałą zabawę z robieniem filmu zaczniemy od stworzenia sobie środowiska pracy. Najlepiej będzie zrobić sobie folder, w którym zbierzemy zdjęcia oraz wygenerujemy sam film. W zależności od długości trwania sekwencji wideo oraz ilości zdjęć umieścimy folder w takim miejscu, aby nie zabrakło nam przestrzeni dyskowej. W moim przypadku do zrobienia filmu trwającego 4 sekundy (25 fps) w rozdzielczość 512 x 384 potrzebowałem około 30 MB dla 100 zdjęć w rozdzielczości 640 x 480. Następnie wchodzimy do wcześniej stworzonego folderu i uruchamiamy skrypt Desktop Images. Skrypt musi posiadać atrybut wykonywania. Poniżej przedstawiam krok po kroku co należy zrobić:

[paszczak000@paszczak ~]$ mkdir filmik
[paszczak000@paszczak ~]$ cd filmik
[paszczak000@paszczak filmik]$ chmod +x desktop_images.sh
[paszczak000@paszczak filmik]$ ./desktop_images.sh

Przed uruchomieniem skryptu proponuję go skonfigurować wedle naszych potrzeb. Wystarczy, że otworzymy go w dowolnym edytorze teksu i zmienimy odpowiednie domyślne wartości, na nasze własne potrzeby. W trakcie działania skryptu powoli otwieramy okna, piszemy tekst, przesuwamy ikonki na pulpicie tworząc kolejne klatki naszego filmu. Im więcej zrobimy zdjęć tym nasz film będzie dokładniejszy lub dłuższy. Po skompletowaniu zdjęć przechodzimy do montażu filmu. Nie jest to skomplikowana czynność. Zamyka się tak naprawdę w postaci wydania dwóch komend:

mencoder mf://*jpg -mf type=jpeg:fps=25 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1 -o pulpit.avi -vf scale=512:384

mencoder mf://*jpg -mf type=jpeg:fps=25 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=2 -o pulpit.avi -vf scale=512:384

Opis poszczególnych opcji jakie podajemy programowi mencoder

  • mf://*jpg - Pierwszy parametr pokazuje jakie pliki chcemy odczytać. Należy pamiętać, że systemy uniksowe rozpoznają wielkość liter i JPG jest zupełnie czymś innym niż jpg. Słowo mf oznacza, że nastąpi odczyt z wielu plików (multifile).
  • -mf type=jpeg:fps=25 - Określamy typ plików (w naszym przypadku pliki jpeg) oraz ilość klatek na sekundę (fps=25).
  • -ovc lavc - Wybieramy bibliotekę lavc, która jest zbiorem dużej liczby kodeków potrzebnych do zakodowania filmu.
  • -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1 - Do zakodowania filmu korzystamy z kodeka MPEG4, popularnie nazywanego DiviX. Kolejną opcją jest ustawienie jakości obrazu (vbitrate=1000). Im jest ona większa tym lepsza jakość filmu, kosztem rozmiaru samego pliku. vpass=1 oznacza, że jest to pierwszy etap kodowania filmu.
  • -o pulpit.avi - Opcja, która określa pod jaką nazwą chcemy zapisać plik wynikowy.
  • vf scale=512:384 - Rozmiary filmu. Nie należy również przesadzać z jego wielkością. Nie powinna ona przekraczać 700 x 500.

Więcej przydatnych opcji znajdziemy w dokumentacji dołączonej do MPlayera. Polecam ją przeczytać i stworzyć własne kompozycje. Również program import posiada wiele ciekawych opcji (obracanie zdjęć. Dostęp do nich uzyskamy dzięki poleceniu:

[paszczak000@paszczak ~]$ import -help 

Efektem naszej pracy będzie krótki filmik. Nie jest może imponujący, ale jest nasz. Zapewne lepsze efekty uzyskamy dzięki xvidcap oraz vncswf, ale nie o tym jest artykuł.

Z kamerą wśród ludzi
Kolejnym krokiem do robienia filmów jest skorzystanie z kamer internetowych, które rozsiane są gdzieś po Internecie. Wiele ciekawych kamer możemy znaleźć na stronie worldcam.pl. Najlepiej będzie wyszukać kamery statyczne. Obraz przesyłany przez kamerę jest co pewien okres czasu. np. co 30 sekund. Najczęściej taka kamera udostępnia obraz pod jednym statycznym adresem, więc pobranie zdjęć i zmontowanie takiego filmu jest dziecinnie proste. Sprowadzi się wszystko do napisania skryptu, który co określoną ilość czasu pobierze zdjęcie i zapisze w jednym folderze. Ja wybrałem trzy kamerki:

Wykorzystamy do tego celu bardzo prosty skrypt. W zależności od naszych ustawień cała operacja może być bardzo długa, dlatego warto skrypt odpalić na komputerze, który jest podłączony do sieci non-stop. Niestety tego typu filmy mogą być bardzo słabej jakości. Wszystko dlatego, że obraz jaki nadawany jest z kamerek sam w sobie jest kiepskiej jakości. Do tego dochodzą jeszcze opóźnienia w przesyłaniu danych, zapchane łącze lub inne czynniki niezależne od nas. Czasem zdarza się tak, że kamera wysyła niepełny obraz ze względu na słabe łącze do jakiego jest podłączona.

Wszystko wydaje się proste, jeżeli obraz z kamery jest zawsze tym samym plikiem. A co jeśli adres zdjęcia się zmienia, np tak jak na stronie The Tokyo Riverside Skyline. Musimy wykorzystać do tego inny skrypt. Skrypt najpierw pobiera stronę HTML, gdzie jest umieszczony obraz z kamery, wycina z niej adres obrazka a potem go pobiera i nadaje odpowiednią nazwę.

Kolejnym krokiem jest wykonanie filmu za pomocą programu mencoder. I gotowe. Możemy oglądać filmik.

Efekty pracy skryptów:

Zabawy z własną kamerką internetową
CamoramaJeżeli mamy kamerkę internetową możemy pokusić się o własne zdjęcia. Istnieją dwie możliwości robienia zdjęć poklatkowych w tym wypadku. Którą wybierzemy, zależy tylko od nas samych. Do zabawy przydadzą nam się dwa programiki: webcam_server oraz Camorama. Jeżeli zdecydujemy się na wykorzystanie programu webcam_server będziemy musieli skorzystać ze skryptu WebCam Static, który za nas zrobi zdjęcia. Przed uruchomieniem skryptu musimy uruchomić samą aplikację do obsługi kamery. Podłączamy kamerkę do portu USB i najlepiej jako root wydajemy polecenie:

[root@nyo swieca]# webcam_server -q 100 -x 

Więcej opcji uzyskamy wpisując polecenie webcam_server -h. W moim przypadku musiałem skorzystać z parametru -x, ponieważ bez tej opcji obraz z kamerki był niebieski. Jest to tak zwana korekcja kolorów (RGB -> BGR). Jeżeli uruchomiliśmy już program, odpalamy przeglądarkę i wpisujemy adres http://localhost:8888/ i oglądamy widok z kamerki. Teraz wystarczy podać do skryptu adres obrazka (http://localhost:8888/) i czekać na efekty.

CamoramaJeżeli nie czujemy się na siłach, by korzystać ze skryptów, możemy skorzystać z prostego w obsłudze programu Camorama.Na początku ustawiamy parametry obrazu. Kolejnym krokiem jest wejście w opcje i zaznaczenie pozycji Automatic Capture oraz ustawienie interwału czasowego. W sekcji Local Capture zaznaczamy Enable local capture oraz Append time to pictures Wybieramy miejsce gdzie mają być zapisywane zdjęcia oraz ich nazwę. Następnie zamykamy opcję i z głównego okna programu wciskamy guzik Take Picture. Następnie znaną już metodą generujemy film i cieszymy się kolejną wspaniałą animacją.

A oto efekt spalającej się świeczki: Płonąca świeczka.

Różne pomysły
Bawiąc się w tworzenie filmów możemy pobudzić naszą wyobraźnię. Ciekawy efekt daje zrobienie zdjęć poklatkowych topniejącej kostki lodu lub rosnącego nasiona fasoli. Jeżeli mamy dużo cierpliwości możemy pokusić się o sfilmowanie kwiatka, który się rozwija o blasku słońca. Wszystko zależy od czasów między kolejnymi zdjęciami. Fajny efekt uzyskamy, kiedy będziemy filmować samych siebie. Trzymając aparat lub kamerkę w wyciągniętych ręcach obracamy się wokół własnej osi i robimy kolejno zdjęcia.

Filmy i skrypty użyte w artykule

Narzędzia, skrypty:

Filmy:

Jak widać zabawa z kinematografią pod Linuksem nie jest zadaniem trudnym. Wszelkie pytania proszę kierować na forum. Czekamy na Wasze filmiki :) W ramach możliwości postaram się opublikować najładniejsze i najciekawsze.



Artykuł pochodzi ze strony: Newbie - http://newbie.linux.pl