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