Potřebuji odsouhlasit používání cookies. Když tyto stránky používáte, vyjadřujete souhlas.

Jak vytvořit Time-Lapse video na Raspberry Pi

Raspberry Pi může kamerou vytvářet spoustu fotek. Chcete vědět jak z těchto fotografií vytvořit time-lapse (časosběrné) video?


  Načítím reklamu ...

V minulém článku jsem popisoval, jak naučit Raspberry Pi fotit fotky v určitém časovém intervalu. Co ale s těmito fotkami dělat? Nejhezčí využití je vytváření time-lapse (časosběrných) videí.

Pokud někdo nevíte, co je to time-lapse neboli časosběrné video, tak asi nejvtipnější ukázka je Homer fotící se dlouhých 39 let 🙂. Tyto „fotky“ pak daly dohromady asi dvouminutové video.


Time-Lapse pomocí programu avconv

Raspberry Pi kamera vytváří fotky pojmenované image{YYYY-MM-DD-HHMMSS}.jpg (např. image2017-07-21-180018.jpg). Tyto fotky ukládá do nějakého adresáře. Počkáme tedy, až jich budeme mít dostatek a můžeme začít.

Nejprve si nainstalujeme balíček libav-tools. Součástí tohoto balíčku je program avconv.

sudo apt-get update
sudo apt-get install libav-tools

Když máme balíček úspěšně nainstalován, můžeme se pustit do práce.

Nejprve musíme fotky přejmenovat. Nepodařilo se mi totiž přijít na to, jak vytvořit video bez přejmenování fotografií 😞. Poradí někdo?

Přejmenování všech fotek provedeme příkazem

ls | cat -n | while read n f; do mv "$f" "image-$n.jpg"; done
Když máme přejmenováno, budou se fotky jmenovat image-N.jpg (například image-1234.jpg).

Pak už jen spustíme program avconv s patřičnými parametry a počkáme si na výsledek.

avconv -r 10 -i image-%d.jpg -b:v 2000k avconv-output.mp4
Parametrem -r je možné nastavit FPS (počet snímků za vteřinu) vytvořeného videa. Běžná videa mají FPS od 24 do 60 snímků za vteřinu. Je to z toho důvodu, že frekvence od 25 snímků za vteřinu lidské oko vnímá jako plynulou. Mě se celkem osvědčilo nastavení 10 snímků za vteřinu.

Parametrem -i definujeme formát jmen souborů, které program avconv použije pro vytvoření videa. V našem případě je to tedy image-%d.jpg. V tomto vzoru (pattern) je použit řetězec %d, který reprezentuje vzestupnou řadu čísel od 1 do N.

Pomocí parametru -b můžeme řídit přenosovou rychlost (bitrate) výsledného videa. Čísla kolem 1000k už mohou být ok.

Nakonec je potřeba určit název výstupního souboru. V příkladu je název výsledného videa avconv-output.mp4.

Program avconv má výrazně víc parametrů, které ale nejsou pro toto základní použití potřeba. Dokumentace programu avconv, v níž je všechny naleznete, je dostupná na adrese https://libav.org/avconv.html.

Když máme všechny parametry nastaveny, tak můžeme program spustit.

V tomto okamžiku jsem se celkem pobavil. Konečně se mi podařilo moje Raspberry Pi 3 slušně potrápit 🙂

load average: 5.59, 5.37, 4.23
gpu temp: 84.9°C
cpu temp: 84.896°C

🙂

Na čtyřjádrový procesor je load (zatížení) 5,59 celkem slušnej. A teplota, běžně se pohybující kolem 50°C, bleskurychle vystřelila k 85°C. Takže tohle je způsob jak Raspberry Pi fakt vytížit a tady možná bude vidět výhoda nějakého druhu chlazení.

Jak spustit program avconv na pozadí

Vytvoření videa pomocí programu avconv na Raspberry Pi je celkem náročná a zdlouhavá úloha. Navíc pokud jsme na Raspberry Pi připojeni pomocí SSH, tak se nám terminál zablokuje. Pokud nechceme proces zrušit, tak se nemůžeme ani odhlásit.

Program je tedy nutné spustit voláním

nohup avconv -r 10 -i image-%d.jpg -b:v 2000k avconv-output.mp4 &

Time-Lapse pomocí programu ffmpeg

Nedivil bych se, kdyby load a teploty někoho vyděsili. Je samozřejmě možné si fotky přetáhnout z Raspberry Pi do nějakého výkonnějšího počítače. Tam pak bude vytvoření videa otázkou okamžiku. Pokud budeme chtít vytvářet video na jiném počítači, doporučuji program ffmpeg.

Na stránce https://ffmpeg.org/download.html je možné stáhnout instalátor pro Windows, Linux i pro macOS.

Po úspěšné instalaci pak stačí spustit příkazem

ffmpeg -framerate 10 -pattern_type glob -i 'image*.jpg' ffmpeg-output.mp4
Pro program ffmpeg nemusíme přejmenovávat soubory a můžeme ponechat jejich původní pojmenování.

Parametrem -framerate se nastavuje FPS. Parametry -pattern_type glob a -i 'image*.jpg' zajistí načtení a zpracování všech potřebných fotografií. ffmpeg-output.mp4 je název výstupního souboru s videem.

Je vytváření time-lapse videí dobrý nápad?

Je to každopádně zajímavý nápad 🙂. Tímto způsobem se dají „natočit“ fakt pěkná videa. Je potřeba jen vybrat správné místo a mít dostatek trpělivosti. Focení na kratičké několikaminutové video zabere několik dní. A pokud má být výsledek zajímavý musí se vybrat jen správné okamžiky.

Každopádně vytvoření videa na Raspberry Pi je celkem slušný benchmark a dokáže ho pěkně zatížit a roztopit. Možná někdy příště napíšu, jestli pasivní chlazení, které je možné koupit ve všech obchodech a všude ho doporučují, má nějaký efekt. Zatím mi přijde, že ne. Ale pravda je, že tohle je první okamžik, kdy jsem Raspberry Pi 3 plně vytížil. Spíš přetížil 🙂.

Malá ukázka výsledného videa

Raspberry Pi, Kamera, Time-Lapse, Návod

- (24. 5. 2019)

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.

Powered by CharlieBlog Engine v2.3 - Login