KursyPoradnikiInspirujące DIYForum

Kurs Raspberry Pi – #11 – filmy, slowmotion, timelapse

Kurs Raspberry Pi – #11 – filmy, slowmotion, timelapse

Za nami pierwsze ćwiczenia z robienia zdjęć i przesyłania obrazu przez sieć. Oczywiście kamera wpięta do Raspberry Pi ma znacznie więcej możliwości.

Tym razem sprawdzimy jak malinka radzi sobie z nagrywaniem filmów: zwykłych, poklatkowych oraz w zwolnionym tempie.

Nagrywanie filmów na Raspberry Pi z raspivid

Do robienia zdjęć wykorzystywaliśmy program raspistill. Przy filmach pomocny będzie raspivid. Jako pierwsze wydajmy polecenie, które nagra film o domyślnej długości wynoszącej 5 sekund:

raspivid -n -w 1920 -h 1080 -cd MJPEG -o test.mpg

Idąc kolejno od lewej: -n wyłączyło podgląd. Rozdzielczość obrazu definiujemy za pomocą opcji -w oraz -h. Plik wynikowy podajemy po -o. Nowością jest opcja -cd, która pozwala na ustalenie metody kompresji obrazu. Do tego testu wybraliśmy MJPEG. Jeśli zajdzie taka potrzeba to obraz można obrócić oczywiście za pomocą parametru -rot.

W tym przypadku występuje również ważna zmiana w działaniu parametru -t. W raspistill określał on po jakim czasie będzie zrobione zdjęcie. Teraz ustawia długość filmu (w milisekundach). Domyślna wartość to 5000 ms, czyli 5 sekund.

Gotowe zestawy do kursów Forbota

 Komplet elementów  Gwarancja pomocy  Wysyłka w 24h

Elementy niezbędne do wykonania wszystkich ćwiczeń z kursu podstaw Rasberry Pi dostępne są w formie gotowych zestawów!

Zamów w Botland.com.pl »

Tak jak poprzednio, gotowy plik został zapisany w katalogu, w którym uruchomiliśmy program:

Nagrany film pojawił się w katalogu.

Nagrany film pojawił się w katalogu.

Odtwarzanie filmów nagranych na Raspberry Pi

Jeśli do malinki mamy podłączony monitor lub łączymy się przez VNC to film możemy odtworzyć w domyślnym programie omxplayer lub w popularnym mplayer (należy go wcześniej zainstalować).

Jeśli łączymy się zdalnie przez SSH, to tak jak poprzednio, film można ściągnąć na PC przez WinSCP. Jednak istnieje duże prawdopodobieństwo, że filmy zapisane w mpg/mjepg nie będą odtwarzały się poprawnie. Najczęściej przez całą długość materiału będzie wyświetlana jedna klatka (jedno zdjęcie). Aby na PC z Windowsem pliki te były odtwarzane poprawnie należy doinstalować kodeki.

Po zainstalowaniu kodeku film będzie poprawnie uruchamiał się na Windowsie. Przykładowy film:

Zmiana kodeka na h.264

Jeśli nie ustawimy parametru odpowiadającego za sposób kompresji, to materiały zostaną domyślnie nagrane z użyciem kodeka h.264, który jest znacznie wydajniejszy:

raspivid -n -w 640 -h 480 -o test_2.h264

Po ściągnięciu na PC film powinien zajmować zdecydowanie mnie miejsca, a jego jakość będzie równie dobra jak poprzednio:

Porównanie rozmiaru dwóch filmów.

Porównanie rozmiaru dwóch filmów.

Filmy w zwolnionym tempie (slowmotion)

Warto również pamiętać o parametrze -fps, który pozwala na zmianę liczby klatek, z którą nagrywane są materiały wideo. Przy rozdzielczości VGA jesteśmy w stanie nagrywać materiały 90 FPS, co pozwala na uzyskanie spowolnionych materiałów (slow motion).

raspivid -n -w 640 -h 480 -o test.h264 -fps 90

Przykład takiego materiału widoczny jest poniżej:

Oczywiście można się przyczepić do jakości nagrań slowmotion, jednak warto pamiętać o tej opcji, bo nawet taka rozdzielczość przy 90 FPS'ach może przydać się w wielu projektach!

Jak nagrać film poklatkowy na Raspberry Pi?

Korzystając z poznanego wcześniej raspistill można bardzo łatwo tworzyć filmy poklatkowe (timelapsy). Zasada jest bardzo prosta. Robimy zdjęcia co określony czas (np. 5 sekund), a następnie łączymy je w film. Składając setki/tysiące zdjęć w film uzyskamy efektowny materiał, na którym widać jak na niebie poruszają się chmury lub jak powstaje obiekt na drukarce 3D.

Zaczynamy od utworzenia nowego katalogu np. timelapse:

mkdir timelapse

Katalog utworzyliśmy, ponieważ nagrywanie filmów poklatkowych wymaga wykonania setek, a często nawet tysięcy zdjęć, lepiej nie zaśmiecać sobie nimi katalogu domowego. Przechodzimy do nowego folderu i uruchamiamy w nim raspistill z następującymi parametrami:

cd timelapse/
raspistill -t 300000 -tl 2000 -o image%04d.jpg -w 1280 -h 720 -rot 180

Idąc od lewej. Parametr -t określa jak długo chcemy robić zdjęcia, tutaj 300000 ms, czyli 300 s, co daje dokładnie 5 minut. Kolejny parametr -tl określa interwał (co ile czasu chcemy robić nowe zdjęcie), tutaj 2000 ms, czyli nowe zdjęcie będzie wykonywane co 2 sekundy. Kolejny parametr -o to oczywiście nazwa pliku z dodaną datą.

Ostatnie parametry to wybór rozdzielczości i obrót kamery (identycznie jak w poprzedniej części). Po uruchomieniu polecenia czekamy 5 minut, aż Raspberry Pi wykona wszystkie zdjęcia. Dla najlepszego efektu podczas nagrywania materiałów poklatkowych kamerę warto skierować np. na ruchliwą drogę lub chmury.

Nowe zdjęcia będą pojawiały się w katalogu przez 5 minut:

Lista plików do filmu poklatkowego.

Lista plików do filmu poklatkowego.

Zdjęcia gotowe, pora więc połączyć je w film. Tutaj pomocny będzie program avconv, który wchodzi w skład pakietu libav-tools. Instalujemy więc konieczne narzędzia:

sudo apt install libav-tools

Po instalacji możemy wywołać polecenie, które wygeneruje dla nas film:

avconv -i image%04d.jpg -r 10 -vcodec libx264 -vf scale=1280:720 timelapse.mp4

Idąc od lewej. Parametrem -i wybieramy materiał wejściowy (nasze zdjęcia). Za pomocą -r określamy liczbę klatek na sekundę.  W tym przykładzie wpisaliśmy 10, co oznacz, że na jedną sekundę naszego filmu przypadnie 10 zrobionych wcześniej zdjęć. Kolejne parametry określają kodek, rozdzielczość oraz nazwę utworzonego wideo. Generowanie materiału może zająć dłuższą chwilę:

Generowanie filmu ze zdjęć.

Generowanie filmu ze zdjęć.

Poniżej widoczny jest film poklatkowy, którego nagranie zajęło kilka godzin:

Długość materiału wynikowego można oszacować na podstawie prostych zależności:

liczba wykonanych zdjęć = długość / interwał
długość filmu = liczba wykonanych zdjęć / FPS filmu

Robienie zdjęć poklatkowych "w tle"

Opisywana metoda robienia zdjęć do filmów poklatkowych blokowała nam Raspberry Pi.  Na szczęście tutaj również możemy wykonywać operacje w tle. W tym celu wykorzystamy operator &, który pozwala właśnie na wykonywanie poleceń w tle. Wystarczy dodać znak & poprzedzony spacją na końcu:

raspistill -t 300000 -tl 2000 -o image%04d.jpg -w 1280 -h 720 -rot 180 &

Zadanie działające w tle możemy podejrzeć wydając polecenie jobs. Z kolei powrót do tego zadania będzie możliwy za pomocą fg. Wtedy już "tradycyjnie", w razie konieczności, zadanie będzie można zakończyć za pomocą CTRL+C.

Sposób wykonywania poleceń w tle.

Sposób wykonywania poleceń w tle.

Podsumowanie

W tym artykule wykorzystaliśmy podstawowe programy do wykonywania zdjęć i filmów z użyciem RPi. Sprawdziliśmy kilka najpopularniejszych zastosowań dla kamery, ale tak naprawdę to dopiero początek. Do kamery jeszcze wrócimy!

Zachęcamy do testów - koniecznie podzielcie się w komentarzach Waszymi timelapsami! W kolejnym odcinku zajmiemy się podstawami portów GPIO. Podłączymy do Raspberry Pi elementy elektroniczne i będziemy mogli nimi bardzo łatwo sterować!

Czy wpis był pomocny? Oceń go:

Średnia ocena 4.9 / 5. Głosów łącznie: 94

Nikt jeszcze nie głosował, bądź pierwszy!

Artykuł nie był pomocny? Jak możemy go poprawić? Wpisz swoje sugestie poniżej. Jeśli masz pytanie to zadaj je w komentarzu - ten formularz jest anonimowy, nie będziemy mogli Ci odpowiedzieć!

Nawigacja kursu

Autor: Piotr Bugalski
Ilustracje: Piotr Adamczyk
Redakcja: Damian Szymański

film, kamera, kursRaspberryPi, slowmotion, timelpase

Trwa ładowanie komentarzy...