Kursy • Poradniki • Inspirujące DIY • Forum
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
Używane parametry są w większości identyczne z programem raspistill.
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:
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.
Przykładowa paczka odpowiednich kodeków to darmowy K-Lite Codec Pack Standard.
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:
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ą.
Dodawanie daty w nazwie jest koniecznie! Inaczej będziemy nadpisywać to samo zdjęcie.
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.
Robienie zdjęć można przerwać za pomocą CTRL+C.
Nowe zdjęcia będą pojawiały się w katalogu przez 5 minut:
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ę:
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:
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.
Uwaga! Ten sposób wykonywania zadań w tle wymaga, aby połączenie z malinką było cały czas podtrzymane (nie można zamknąć terminala).
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ć!
Nawigacja kursu
Autor: Piotr Bugalski
Ilustracje: Piotr Adamczyk
Redakcja: Damian Szymański
Powiązane wpisy
film, kamera, kursRaspberryPi, slowmotion, timelpase
Trwa ładowanie komentarzy...