Time-lapse videó készítés

Nem olyan régen, elkezdtem a kertemben lévő növényekről félórás gyakorisággal fényképeket készíteni. Ezzel mára eljutottam odáig, hogy van közel 3000 darab fényképem a növekedésükről, amiket fel kellene dolgozni és videót csinálni belőlük.

És itt jön az első probléma: a természet "galádsága", hogy általában nem ugyanakkor kel fel és nyugszik le a nap, vagyis pusztán az egyes képek készítésének időpontjára alapozva nem lehetséges eldönteni, használható-e a kép vagy sem egy nappali videóhoz. Na és persze ha ezt sikerült megoldani, videóvá is kellene varázsolni a képeket.

A problémát a következő, talán nem túl elegáns és nem is túl gyors, ugyanakkor meglehetősen gyorsan összerakott kis scripttel oldottam meg, mely a képek világossága alapján sorol nappali vagy éjszakai kép kategóriába.

#!/bin/bash

for f in $(ls *.jpg); do
  echo $f
  c=$(/usr/bin/convert $f -colorspace hsb -resize 1x1 txt:-)
  echo $c  brightness=$(echo $c | cut -d ',' -f7 | cut -d ')' -f 1)
  echo $brightness
  if [ $brightness -gt 60 ]; then
     echo nappal;
     cp $f nappal/
 else
     echo este;
     cp $f este/
  fi
done

A szétválogatást követően, már csak egy videóvá kell egyesítenünk a képeket.

Itt gondoltam visszatérek Windowsra és gyorsan katt-katt jelleggel megoldom MakeAVI-val a videó összerakását, viszont végül mégis maradtam a Linux terminálomnál. Ennyi fájl esetében már kényelmesebb így.

Első lépésként létrehoztam egy szövegfájlt, benne az összes képfájl nevével, hogy biztosan megfelelő sorrendben kerüljenek a videóba a képek. Ez végtelenül triviális módon, a fájlok dátumai alapján történt, de történhetne ugye akárhogy máshogy is.

ls -rt *.jpg > list

Ezt követően az mencoder toolt használva összeraktam a videót, amire legyen itt két opció:

  1. tömörítéssel:
    mencoder -ovc x264 -mf fps=10:type=jpg 'mf://@list' -o timelapse.avi
  2. tömörítés nélkül:
    mencoder -ovc copy -mf fps=10:type=jpg 'mf://@list' -o timelapse.avi

Megjegyzés: talán némileg gyorsabb módja lett volna a leválogatásnak, ha az egyes képek világossága helyett egy napfelkelte-napnyugta táblázatot kerítek valahonnan, de bárminemű optimalizálással, szépítéssel már majd csak akkor játszom, ha túl türelmetlen leszek kivárni ennek a scriptnek futását :)