Odką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.
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
Całą 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
:
[bash]# !/bin/bash
x=100 #Ilosc zdjec
resolution=640×480 #Rozdzielczosc zdjecia
quality=100 #Jakosc zdjecia JPEG podana w procentach
i=0
while [ $i -lt $x ]; do
if [ -x "/usr/bin/import" ]
then
import -w root -resize $resolution -quality $quality -silent `date -Isec`.jpg
fi
i=`expr $i + 1`
done[/bash]
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:
[bash]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[/bash]
Powsały w ten sposób plik możemy przkonwertować do formatu FLV:
[bash]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[/bash]
lub skorzystać z ffmpeg
:
[bash]ffmpeg -i pulpit.avi -s 320×240 -ar 44100 -r 12 pulpit.flv[/bash]
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łowomf
oznacza, że nastąpi odczyt z wielu plików (multifile).-mf type=jpeg:fps=25
– określamy typ plików (w naszym przypadku plikijpeg
) 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:
- Ulica Piotrkowska – Pasaż Schillera w Łodzi
- Uczelniana Kawiarenka – Wyższa Szkoła Informatyki w Łodzi
- The Tokyo Riverside Skyline
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.
[bash]# !/bin/bash
x=800 #Ilość zdjęć jaką ma pobrać skrypt
url="http://virgo.wsinf.edu.pl/kawiarenka.jpg" #Adres obrazka z kamerki internetowej
time=60 #Odstęp czasu podany w sekundach między kolejnymi pobraniami obrazka
size=640 #Szerokość do jakiej ma być przeskalowane zdjęcie
i=0
while [ $i -lt $x ]; do
wget $url -O `date -Isec`.jpg
i=`expr $i + 1`
sleep $time
done
if [ -x "/usr/bin/convert" ]
then
mogrify -resize $size *.jpg
fi[/bash]
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
.
[bash]# !/bin/bash
x=800 # Ilość zdjęć jaką ma pobrać skrypt
url="http://tokyosky.ddo.jp/cgi-bin/imagesort.pl" # Adres obrazka z kamerki internetowej
time=60 # Odstęp czasu podany w sekundach między kolejnymi pobraniami obrazka
size=640 # Szerokość do jakiej ma być przeskalowane zdjęcie
i=0
while [ $i -lt $x ]; do
wget -c $url -O tmp.html
image=`cat tmp.html | grep '<P align="center"’ | cut -d \" -f 4- | cut -d \" -f 1`
wget -c http://tokyosky.ddo.jp/imagelist/$image -O `date -Isec`.jpg
rm tmp.html
i=`expr $i + 1`
sleep $time
done;
if [ -x "/usr/bin/convert" ]
then
mogrify -resize $size *.jpg
fi[/bash]
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
Jeż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.
Jeż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.
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 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
- Piotrkowska, mirror: youtube.pl.
- Tokyo, mirror: youtube.pl.
- Kawiarenka internetowa, mirror: youtube.pl.
- Świeczka, mirror: youtube.pl.
- Rzeżucha, mirror: youtube.pl.
- Retkinia, mirror: youtube.pl.
- Pulpit, mirror: youtube.pl.
- Topniejący lód, mirror: youtube.pl.
- Topniejący lód 1, mirror: youtube.pl.
- Giewont, mirror: youtube.pl.
- Kasprowy Wierch, mirror: youtube.pl.
- Zakopane, mirror: youtube.pl.
- The Timeline, mirror: youtube.pl.
To rejestrowania desktopu lepiej użyć recordmydesktop.
;-)
Zgadza się, ale ten artykuł był o czymś innym ;-)
Dzięki, chyba się tym niedługo pobawię :)
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.
[…] http://thecamels.org/2008/09/01/tworzenie-filmow-metoda-zdjec-poklatkowych/ Napisane w niedziela, październik 5th, 2008 at 13:53 zapamiętane w porady, umysł. [ RSS 2.0 feed. ] [ zostaw ślad ] […]
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ć?
jak mam stwozyc film by wrzucic na stronke youtobe.pl
Przecież wszystko jest napisane.
[…] jest zapis obrazu wideo we wszystkich formatach. Więcej na jej temat można przeczytać w artykule Tworzenie filmów metodą zdjęć poklatkowych. Dodaj posta […]
Hello! ekeecae interesting ekeecae site! I’m really like it! Very, very ekeecae good!
[…] Całą robotę wykonał Raspberry Pi wraz z kamerką na statywie oraz prostym skryptem do zrzucania zdjęć co minutę. Pomocy w składaniu filmów może być mój artykuł Tworzenie filmów metodą zdjęć poklatkowych. […]
[…] Kdenlive jest świetną aplikacją do amatorskiej obróbki filmów. Posiada prosty interfejs graficzny, wsparcie dla kamer internetowych, a dzięki FFmpeg możliwy jest zapis obrazu wideo we wszystkich formatach. Więcej na jej temat można przeczytać w artykule Tworzenie filmów metodą zdjęć poklatkowych. […]