Inhaltsverzeichnis

Zeitraffer

Um ein Zeitraffer-Video zu erstellen, benötigt man viele Bilder.
Die Bilder werden dann gemeinsam zu einem Video zusammengestellt.

Bilder erstellen

Da man diese Bilder nicht einzeln schießen möchte, benutzt man einen Selbstauslöser, der zu gegebenen Zeiten das Auslösekommando gibt, oder man erstellt die Bilder mit einer an einen Computer angeschlossenen Camera oder WebCam.

Mit motion kann man diese Bilder erstellen lassen.

apt-get install motion

motion sollte man als Dienst laufen lassen. Dafür muss man es zuerst konfigurieren.
Die Auflösung muss bei motion immer durch 16 Teilbar sein. ← Vorgabe!!

vi /etc/motion/motion.conf
videodevice /dev/<VIDEO_DEVICE
width 1280
height 720
quality 90
snapshot_interval=5
target_dir <PATH>
snapshot_filename %s
webcam_port 0
control_port 0

Danach das Ganze starten mit.

service motion start

Hier werden nun Bilder mit der Auflösung 1280*720 in einem Interval von 5 Sekunden erstellt und mit 90%iger Qualität als JPEG gespeichert. Der Dateiname setzt sich aus dem Timestamp und der Dateiendung zusammen.

Monitoring

Um mal eben nachzusehen ob noch Bilder erstellt werden, kann man sich eine kleine Website erstellen, die immer das letzt Bild anzeigt.

<html>
<body>
<style>
* { box-sizing: border-box; }
html, body { height: 100%; width: 100%; margin: 0; padding: 0; }
img { max-width: 100%; max-height: 100%; }
</style>
 
<img id="last"/>
<script>
  function setLastImg() {
    document.getElementById('last').src = "file:///tmp/motion/lastsnap.jpg?" + new Date().getTime();
  }  
  setLastImg();
  setInterval(setLastImg, 1000);
</script>
</body>
</html>

Video erstellen

Die Bilder müssen nun zu einem Video zusammengestellt werden. Dies kann man mit ffmpeg, oder jetzt neu libav-tools, machen.

apt-get install libav-tools

avconv kann mit den Timestamps von motion nichts anfangen, daher benennt mann die Bilder einfach um.

x=1; for i in *.jpg; do counter=$(printf %06d $x); cp "$i" <PFAD>/img"$counter".jpg; x=$(($x+1)); done

Die Bilder werden nun zu einem angegebenen Pfad kopiert und umbenennt in <NUMMER>.jpg

Nun kann man mit folgendem Befehl das Video erstellen.

avconv -r 30 -i <PFAD>/img%06d.jpg -s hd720 -vcodec libx264 <DATEINAME>.mp4

Zeitraffer aus bestehendem Video

avconv -i in.ts -vf "setpts=(1/2)*PTS" output.mp4

1/2 = halbe länge (doppelte Gescheindigkeit)

TAGS

timelapse