Níže uvedený návod byl testován na linuxu (Fedora 22), ale měl by beze změny fungovat také pod Windows.

Úvod

Určitě jste už viděli časosběrná vide (timelapse). Ty vznikají tak, že se daná scéna/objekt fotí v pravidelných intervalech (třeba po 1 minutě). Tento postup má vyhodu v tom, že kdybychom stejnou dobu natáčeli video, tak bychom potřebovali obrovské úložistě a následné zpracování videa by trvalo věčnost. Získané obrázky poté přehrajeme vyšší rychlostí (třeba 25 snímků/s) a časosběrné video máme hotové.

Jak na to

Předpokládám, že už máme vyfocené obrázky, které jsou uložené ve složce.

Pokud nemáme, tak nainstallujeme FFmpeg

$ sudo dnf install ffmpeg Fedora

$ sudo apt-get install ffmpeg Debian, Ubuntu

Pro FFmpeg je výhodné mít snímky označené stylem: obr0001.jpg, obr0002.jpg, ...

Jestli Váš fotoaparát ukládá snímky v jiné formátu (třeba 2016-03-06-20-55.jpg), tak můžete použít následující skript pro přejmenování (spusťte ve složce s fotografiemi):

#!/bin/bash

a=0

for i in *.jpg; do
    new=$(printf "%04d.jpg" "$a")
    mv -- "$i" "$new"
    let a=a+1
done

Nyní můžeme přistoupit k samotnému vytvoření časosběrného videa:

$ ffmpeg -framerate 25 -i "%04d.jpg" -c:v libx265 -r 25 -pix_fmt yuv420p timelapse.mp4

  • -framerate 25 - nastavuje snímkovou frekvenci vstupu
  • -i "%04d.jpg" - jméno vstupních souborů ve formátu 0001.jpg, 0002.jpg, ...
  • -c:v libx265 - výstupní kodek - v tomto případě jsem použil moderní x265, jehož výstup je mnohem menší při srovnatelné kvalitě jako x264, ale výpočet trvá několikanásobně déle
  • -r 25 - nastavuje výstupní snímkovou frekvenci
  • -pix_fmt yuv420p - nastavení vzorkování z JPEG 4:2:2 na běžné 4:2:0 (lepší kompatibilita s přehrávači)
  • timelapse.mp4 - název výstupního souboru

Nastavením snímkové frekvence ovlivňujeme "rychlost" videa. Čím bu nižší, tím bude video pomalejší (za 1s se vykreslí méně snímků).

Vytvářel jsem toto timelapse video z 3092 snímků o rozlišení 1600x1200px a převod do x265 běžel rychlostí 0,8 - 0,4 snímku/s na stroji s dvěma obstarožními procesory Intel Xeon 3000DP@3.0GHz a celková doba převodu byla 4688s a výsledná velikost 28MB. Na moderních procesorech bude převod mnohem rychlejší.

Když jsem video nahrával na Youtube, tak jsem zjistil, že ještě stále nepodporují kodek x265, takže jsem video ještě zkonvertoval do x264:

$ ffmpeg -i timelapse.mp4 -c:v libx264 timelapse_x264.mp4

Závěr

Podle tohoto návodu by jste měli být schopni vytvářet svá vlastní časosběrná videa. Pokud narazíte na nějaké problémy, tak se neváhejte zeptat na našem fóru.

Zdroje