Zaloguj się
X
 
Login:
Hasło:
  Zapamiętaj mnie
Rozmiar tekstu:

Tworzenie filmów metodą zdjęć poklatkowych


Dodano: 1.09.2008    Autor: Kamil Porembiński 
Komentarze: 8

Zdjęcia poklatkoweOdkąd pamiętam zawsze lubiłem oglądać kanał Discovery Channel. Bardzo często w różnego rodzaju reklamówkach, czy programach na tym kanale pokazywane były filmy w przyspieszonym tempie. Wschód słońca w dwie minuty a budowa Taipei 101 w niecałe pięć. Zainspirowany takimi filmami trafiłem w końcu na 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.

Postaram się pokazać jak 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. Kiedyś takie filmy robione były specjalnymi kamerami do zdjęć poklatkowych. Dzisiaj za pomocą wszelkiego rodzaju sprzętu i narzędzi zrobienie takich zdjęć i filmów jest dziecinnie proste i tanie.

Zdjęcia poklatkowe

Tak. Przez większość czasu będziemy robić zdjęcia przy użyciu nieruchomo stojącego aparatu fotograficznego, kamery internetowej lub zwykłych narzędzi Linuksowych. 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 zachód słońca, wzrost roślin, postęp budowy domu czy topniejącą kostkę lodu.

Jeżeli posiadamy aparat, który ma wbudowaną funkcję time-lapse nie musimy się o nić martwić. Aparat sam zrobi takie zdjęcia, a potem zmontuje z nich film. Inne modele potrafią zrobić serię zdjęć w określonych odstępach czasu zapisując każde zdjęcie do osbnego pliku. Niestety takie aparaty są nieczęsto spotykane a nasza zabawa jest ograniczona pojemnością karty.

Zdjęcia poklatkowe

Kluczowym elementem 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ę (w epoce kina niemego było to 16 klatek na sekundę).

Filmując zjawiska, które trwają bardzo długo na przykład: wschód słońca, zmiana pogody, pory dnia to odstęp między kolejnymi zdjęciami powinien być stosunkowo długi. Jeżeli będziemy filmować niebo przez około 5 godzin i chcemy by nasz film wynikowy trwał około 30 sekund musimy zrobić 30 * 25 = 750 zdjęć. Zjawisko jakie będziemy filmować trwać będzie około 5 godzin, czyli 5 * 60 * 60 = 18 000 sekund, z których musimy zrobić 750 zdjęć. Po podzieleniu 18 000 / 750 = 24 sekundy 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.

Zabierając się za robienie zdjęć polecam robienie ich w troszeczkę większej ilość, ponieważ prościej będzie usunąć zbędne klatki niż dorobić brakujące części filmu.

Potrzebne narzędzia

Sprzęt:
Do zabawy z animacją nie potrzebne będzie nam zbyt dużo rzeczy. Jeżeli nie mamy specjalnego aparatu z funkcją time-lapse, to musimy zadowolić się kamerą internetową lub zwykłym aparatem. Jeżeli mamy kartę telewizyjną i aparat z wyjściem na telewizor, to 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ą specjalnyc skryptów wydobędziemy zdjęcia tych kamer.

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ęć. Ich rozdzielczość powinna mieścić się w granicach od 640 x 480 do 1024 x 768.

Aplikacje:
Potrzebne będzie nam również posiadanie doskonałego i niezastąpionego pakietu MPlayer, a dokładniej programu MEncoder, który potrafi konwertować serię zdjęć w film wideo. Do robienia filmów naszego pulpitu za pomocą zdjęć po klatkowych przyda się program import dotępnego w ImageMagick.

Filmujemy nasz pulpit - coś łatwego na początek

Pulpit - zdjęcia poklatkoweCałą zabawę z robieniem filmu zaczniemy od stworzenia sobie środowiska pracy. Najlepiej będzie zrobić osobny 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 klatek na sekundę) w rozdzielczość 512 x 384 potrzebowałem około 30 MB dla 100 zdjęć w rozdzielczości 640 x 480. Przyda nam się do tego skrypt desktop_images.sh:

  1. # !/bin/bash
  2. x=100 #Ilosc zdjec
  3. resolution=640x480 #Rozdzielczosc zdjecia
  4. quality=100 #Jakosc zdjecia JPEG podana w procentach
  5.  
  6. i=0
  7. while [ $i -lt $x ]; do
  8. if [ -x "/usr/bin/import" ]
  9. then
  10. import -w root -resize $resolution -quality $quality -silent `date -Isec`.jpg
  11. fi
  12. i=`expr $i + 1`
  13. done

Wystarczy, że uruchomimy go we wcześniej stworzonym katalogu. 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.

Pierwszy montaż filmu

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

Powsały w ten sposób plik możemy przkonwertować do formatu FLV:

mencoder -forceidx -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=250:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=360:240 -o pulpit.flv

lub skorzystać z ffmpeg:

ffmpeg -i pulpit.avi -s 320x240 -ar 44100 -r 12 pulpit.flv

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 MEncodera. Polecam ją przeczytać i stworzyć własne kompozycje. Również program import posiada wiele ciekawych opcji jak na przykład obracanie zdjęć.

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.

Najprościej będzie skorzystać z kamer statycznych. Obraz przesyłany przez kamerę jest co pewien okres czasu. np. co 30 sekund. Najczęściej taka kamera udostępnia zdjęcia 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 kilka kamerek:

Napiszemy do tego celu bardzo prosty skrypt webcam_static.sh. 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.

  1. # !/bin/bash
  2. x=800 #Ilość zdjęć jaką ma pobrać skrypt
  3. url="http://virgo.wsinf.edu.pl/kawiarenka.jpg" #Adres obrazka z kamerki internetowej
  4. time=60 #Odstęp czasu podany w sekundach między kolejnymi pobraniami obrazka
  5. size=640 #Szerokość do jakiej ma być przeskalowane zdjęcie
  6.  
  7. i=0
  8. while [ $i -lt $x ]; do
  9. wget $url -O `date -Isec`.jpg
  10. i=`expr $i + 1`
  11. sleep $time
  12. done
  13. if [ -x "/usr/bin/convert" ]
  14. then
  15. mogrify -resize $size *.jpg
  16. fi

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 napisać inny skrypt: webcam_dynamic.sh.

  1. # !/bin/bash
  2. x=800 # Ilość zdjęć jaką ma pobrać skrypt
  3. url="http://tokyosky.ddo.jp/cgi-bin/imagesort.pl" # Adres obrazka z kamerki internetowej
  4. time=60 # Odstęp czasu podany w sekundach między kolejnymi pobraniami obrazka
  5. size=640 # Szerokość do jakiej ma być przeskalowane zdjęcie
  6.  
  7. i=0
  8. while [ $i -lt $x ]; do
  9. wget -c $url -O tmp.html
  10. image=`cat tmp.html | grep '<P align="center"' | cut -d \" -f 4- | cut -d \" -f 1`
  11. wget -c http://tokyosky.ddo.jp/imagelist/$image -O `date -Isec`.jpg
  12. rm tmp.html
  13. i=`expr $i + 1`
  14. sleep $time
  15. done;
  16. if [ -x "/usr/bin/convert" ]
  17. then
  18. mogrify -resize $size *.jpg
  19. fi

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 będzie już tylko zmontowanie z powstałych plików filmu.

Własna kamera internetowa

Świeczka - kamera internetowaJeż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 programy:

Na samym początku musimy uruchomić webcam-server. Po podłączeniu kamerki do portu USB wystarczy wydać polecenie: webcam-server -q 100.

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).

Po uruchomieniu serwera, odpalamy przeglądarkę i wpisujemy adres http://localhost:8888/ aby obejrzeć obraz. Teraz wystarczy podać do skryptu webcam_static.sh adres obrazka (http://localhost:8888/) i czekać na efekty.

CamoramaJeżeli nie czujemy się na siłach, by korzystać ze skryptów i uruchamiać serwer, 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. Tak zebrane obrazki konwertujemy na film.

Świeczka - kamera internetowa

Montaż wideo

Ostatnim krokiem całej zabawy było zmontowanie kilku klipów wideo w jeden film. Mamy do dyspozycji kilka programów, które będą odpowiednie dla tego zadania:

Ja wykorzystałem Kdenlive. Program posiada prosty w obsłudze nielinearny edytor plików wideo związany ze środowiskiem KDE. Potrafi edytować wiele ścieżek na raz i eksportować do wielu różnych formatów, wspiera efekty czasu rzeczywistego, obróbkę obrazów, kolorów, tytułów, zarówno klipów audio jak i wideo oraz posiada w pełni konfigurowalny interfejs.

Kdenlive

KDEnLive jest bardziej intuicyjny od Avidemux i Kino. Jest dosyć prosty chociaż posiada sporo konfigurowalnych efektów i przejść. Potrafi pracować z plikami, które obsługiwane są przez FFmpeg. Formatem wyjściowym może być MPEG, DV, Vob, RealVideo, Flash, Theora, WAV, MP3, XVID, QuickTime.

Gotowy film

Film w pełnej jakości znajduje się w pliku timeline.mpeg (200,2 MB).

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

Bibliografia

  • http://gdzies.kom zyga

    To rejestrowania desktopu lepiej użyć recordmydesktop.

    ;-)

  • http://paszczak.thecamels.org Kamil Porembiński

    Zgadza się, ale ten artykuł był o czymś innym ;-)

  • http://flegmatyk.jogger.pl/ flegmatyk

    Dzięki, chyba się tym niedługo pobawię :)

  • Chaos Engine

    Bardzo dobry art. Dla mnie idealnie rtafiony w czas bo też zakupiłem kamerkę internetową i używam jej właśnie między innymi do monitorowania pogody/widoku z okna. Polecam se swojej strony do tego palantir (http://www.fastpath.it/products/palantir/index.php) który dobrze się sprawdza w roli deamona serwującego dump z kamerki.

  • Pingback: Home Site .::MoRp.pl::. » Blog Archive » Tworzenie filmów metodą zdjęć poklatkowych

  • matix

    Chciałbym zrobić taki filmik ale nie kumam o co chodzi z tymi skryptami :/ gdzie ja mam to skopiować? i jak to zapisać i uruchomić?

  • UuasiulauU

    jak mam stwozyc film by wrzucic na stronke youtobe.pl

  • http://paszczak.thecamels.org Kamil Porembiński

    Przecież wszystko jest napisane.

  • Pingback: Kdenlive 0.7 | thecamels.org

  • Pharmk557

    Hello! ekeecae interesting ekeecae site! I’m really like it! Very, very ekeecae good!

  • Pingback: Dziewięćset dwa - Viaxe.pl :: Podróże informatyka

  • Pingback: Kdenlive 0.7 | OSWorld.pl

Celem naszej działalności jest przekazywanie wiedzy dotyczącej systemów operacyjnych Linux. Prezentowane artykuły to bogate źródło informacji na temat dystrybucji systemów opartych na Ubuntu. Nasza uwaga koncentruje się między innymi na następujących kwestiach: Ubuntu, Linux Mint, Unity, CentOS, Red Hat oraz Raspberry Pi.
Creative Commons Uznanie autorstwa 3.0