Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
wetter:mobotix:movie [08.01.2014 17:10. ] djangowetter:mobotix:movie [25.01.2019 14:32. ] – [Zeitrafferfilm der Webcam-Bilder erstellen] django
Zeile 1: Zeile 1:
 ====== Zeitrafferfilm der Webcam-Bilder erstellen ====== ====== Zeitrafferfilm der Webcam-Bilder erstellen ======
-FIXME+Wer kennt sie nicht und hat nicht selbst in der Kindheit mal ein kleines Daumenkino gebastelt. Was liegt also ferner, als das gleiche nun mit den Bildern einer Wetter-Webcam zu machen!
  
 +In dem nun folgendem Beitrag sehen wir uns das nun mal ein wenig näher an. Ziel ist es am Ende ein kleines Filmchen, wie dieses hier zu erzeugen:
 +
 +{{ :wetter:mobotix:west_lastday.mp4 |Wetter-Webcam-Zeitrafferfilm mit Blick Richtung Westen}}
 +
 +===== Konfiguration =====
 +
 +==== Abholen und Abspeichern der Wetter-Webcam-Bilder ====
 +
 +Bevor wir uns nun ein Script zum Abspeichern von einzelnen Standbildern machen, legen wir noch kurz das benötigte Zielverzeichnis an:
 +
 +   $ mkdir -p /home/weather/movies
 +
 +Als nächsten legen wir uns ein passendes Downloadscript an.
 +
 +   # vim /usr/local/bin/cam4mov.sh
 +<file bash /usr/local/bin/cam4mov.sh>#!/bin/sh 
 +# Script zum Abholen und Abspeichern der Wetter-WebcamBilder für die Zeitrafferfilme 
 +# Das script wird jede Minute (user-crontab!) aufgerufen.
 +#
 +# usercrontab
 +# jede Minute ein Bild für den Wetterfilm abspeichern
 +# * 4-22 * * * /usr/local/bin/cam4mov.sh 1>/dev/null 2>&1
 +#
 +# Django : 2013-03-13 
 +
 +
 +WORKDIR="/home/weather/movies"
 +CAMURL_1="http://cam-west.intra.nausch.org/record/current.jpg"
 +CAMURL_2="http://cam-ost.intra.nausch.org/record/current.jpg"
 +
 +PIC_CAM_1="CAM_WEST_"
 +PIC_CAM_2="CAM_OST_"
 +PIC_DAY=`date +%d`
 +PIC_MONTH=`date +%m`
 +PIC_YEAR=`date +%Y`
 +PIC_HOURS=`date +%H`
 +PIC_MINUTES=`date +%M`
 +PIC_SECONDS=`date +%S`
 +PIC_NAME_1=$PIC_CAM_1$PIC_YEAR$PIC_MONTH$PIC_DAY"_"$PIC_HOURS"-"$PIC_MINUTES"-"$PIC_SECONDS".jpg"
 +PIC_NAME_2=$PIC_CAM_2$PIC_YEAR$PIC_MONTH$PIC_DAY"_"$PIC_HOURS"-"$PIC_MINUTES"-"$PIC_SECONDS".jpg"
 +
 +cd $WORKDIR
 +/usr/bin/wget --user="webcamuser" --password="Django-is-a-G33k!" $CAMURL_1
 +/usr/bin/rsync -av current.jpg $PIC_NAME_1
 +/bin/rm current.jpg
 +/usr/bin/wget --user="webcamuser" --password="Django-is-a-G33k!" $CAMURL_2
 +/usr/bin/rsync -av current.jpg $PIC_NAME_2
 +/bin/mv current.jpg $PIC_NAME_2
 +</file>
 +
 +Ergibt pro Stunde 60 Bilder je Webcam, oder 1140 Bilder in 19 Stunden, bzw. 120 Bilder pro Stunde und 2280 Bilder am Tag (19 Stunden).
 +
 +Damit nun die Minutenbilder auch gespeichert werden können, legen wir uns für unseren Wetter-User eine crontab an.
 +   $ crontab -e
 +
 +<code bash>SHELL=/bin/bash
 +MAILTO="weather@wetterstation-pliening.info"
 +
 +# In der Zeit von 4:00 - 22:59 Uhr jeweils ein Bild der Webcams für den Wetterfilm abspeichern
 +* 4-22 * * * /usr/local/bin/cam4mov.sh 1>/dev/null 2>&1
 +</code>
 +
 +==== Generieren des Zeitrafferfilms ====
 +Zum Generieren des bzw. der Zeitrafferfilme greifen wir auf das Programm **ffmpeg** aus dem gleichnamigen Projekt [[http://www.ffmpeg.org/|FFmpeg]] zurück.
 +
 +Falls noch nicht geschehen, installieren wir uns das betreffende Paket mit Hilfe von **YUM**.
 +   # yum install ffmpeg -y
 +
 +Nun erstellen wir uns ein kleines shell-Script
 +   # vim /usr/local/bin/pics2movie.sh
 +<file bash /usr/local/bin/pics2movie.sh>#!/bin/bash 
 +# Script zum Erstellen eines Zeitrafferfilms aus den minütlich abgespeicherten Webcambildern. 
 +# Das script wird jede Minute (user-crontab!) aufgerufen.
 +#
 +# usercrontab
 +# Nach dem Speichern des letzten Bildes um 23:01 Uhr werden die beiden Webcam-Zeitrafferfilme
 +# generiert.
 +#1 23 * * * /usr/local/bin/pics2movie.sh 1>/dev/null 2>&1
 +#
 +# Django : 2014-02-02
 +
 +# Definition der Variablen
 +WORKDIR="/home/weather/movies/"
 +WORKDIR_1="/home/weather/movies/WEST"
 +WORKDIR_2="/home/weather/movies/OST"
 +ARCHIVEDIR="/mnt/nas/weather/movies/archive/"
 +TEMPFILE="/home/weather/movies/output.avi"
 +TEMPFILE2="/home/weather/movies/output2.avi"
 +MUSIK="/home/weather/movies/musik/Joakim_YAMA_-_Astralia_60sec.wav"
 +QUELLE_1="/home/weather/movies/CAM_WEST*"
 +QUELLE_2="/home/weather/movies/CAM_OST*"
 +
 +MOVIE_DAY=`date +%d`
 +MOVIE_MONTH=`date  +%m`
 +MOVIE_YEAR=`date +%Y`
 +MOVIE_NAME_1="west"_"$MOVIE_YEAR$MOVIE_MONTH$MOVIE_DAY".avi
 +MOVIE_NAME_2="ost"_"$MOVIE_YEAR$MOVIE_MONTH$MOVIE_DAY".avi
 +
 +# ersten Film erstellen:
 +# ins Zielverzeichnis wechseln
 +cd $WORKDIR_1
 +rm * -f
 +/bin/mv $QUELLE_1 $WORKDIR_1 
 +
 +# Bilder zum anschließendem Bearbeiten mit ffmpeg umbenennen
 +i=0
 +for File in $(ls *.jpg)
 +        do ((i++))
 +        mv $File $(printf "PIC_%04d.jpg " $i)
 +done
 +
 +# Film erstellen und Musik dazumischen
 +/usr/bin/ffmpeg -f image2 -i PIC_%04d.jpg -i $MUSIK -shortest -vcodec libx264 $ARCHIVEDIR$MOVIE_NAME_1
 +
 +# zweiten Film erstellen:
 +# ins Zielverzeichnis wechseln
 +cd $WORKDIR_2
 +rm * -f
 +/bin/mv $QUELLE_2 $WORKDIR_2
 +
 +# Bilder umbenennen
 +i=0
 +for File in $(ls *.jpg)
 +        do ((i++))
 +        mv $File $(printf "PIC_%04d.jpg " $i)
 +done
 +
 +# Bilder zum anschließendem Bearbeiten mit ffmpeg umbenennen
 +/usr/bin/ffmpeg -f image2 -i PIC_%04d.jpg -i $MUSIK -shortest -vcodec libx264 $ARCHIVEDIR$MOVIE_NAME_2
 +</file>
 +
 +Wie im Script schon vermerkt benötigen wir nun nur noch einen cronjob, der uns täglich den Filme erstellt.
 +Diesen cronjob erstellen wir mit den Rechten des Wetterusers.
 +   # su - weather
 +
 +Die crontab des Useres **weather** bearbeiten wir nun mit dem folgendem Befehl:
 +   $ crontab -e
 +
 +<code>SHELL=/bin/bash
 +MAILTO="django@nausch.org"
 +#Wetterdatenupdate der Webcam
 +*  *  *  *  *   /usr/local/bin/cam-update.sh 1>/dev/null 2>&1
 +
 +# jede Minute ein Bild für den Wetterfilm abspeichern
 +* 4-22 * * * /usr/local/bin/cam4mov+.sh 1>/dev/null 2>&1
 +
 +# um 23:01 Uhr die Filme erstellen
 +1 23 * * * /usr/local/bin/pics2movie.sh 1>/dev/null 2>&1
 +</code>
 +Um 23:01 Uhr wird nun unser Script jeden Tag gestartet und je nach Größe der Ausgangsbilder und der Rechenleistung des Wetter-Servers liegen dann nach einigen Minuten die betreffenden Wetterfilme im Zielverzeichnis. 
 +   # ll /mnt/nas/weather/movies/archive/*_20140222.avi -h
 +
 +<code>-rw-r--r-- 1 nobody nobody 128M Feb 22 23:28 /mnt/nas/weather/movies/archive/ost_20140222.avi
 +-rw-r--r-- 1 nobody nobody 107M Feb 22 23:14 /mnt/nas/weather/movies/archive/west_20140222.avi
 +</code>
 +==== Film bei YouTube hochladen ====
 +Um nun nicht jeden Film einzeln bei [[http://youtube.com|YouTube]] hochladen zu müssen, wollen wir auch das automatisieren. wir greifen dazu auf das Programm **youtube-upload** von [[tokland@gmail.com|Arnau Sanchez]] zurück. Von der [[https://code.google.com/p/youtube-upload/downloads/list|Downloadseite]] laden wir das Paket auf unseren Rechner.
 +Zuvor wechseln wir noch inj unser Zielverzeichnis.
 +   # cd /usr/local/src/
 +
 +Dann holen wir uns das Programmpaket.
 +   # wget https://code.google.com/p/youtube-upload/downloads/detail?name=youtube-upload-0.7.3.tgz
 +
 +Anschließend entpacken wir das Paket.
 +   # tar zxvf youtube-upload-0.7.3.tgz
 +
 +Dann verschieben wir das Programmpaket ins Archiv.
 +   # mv /usr/local/src/youtube-upload-0.7.3.tgz /usr/local/src/packages
 +
 +Zum Schluss setzen wir noch einen symlink auf das Python-Script. 
 +   # ln -s /usr/local/src/youtube-upload-0.7.3/youtube_upload/youtube_upload.py /usr/local/bin/youtube_upload
 +
 +Nun brauchen wir nur noch ein kleines Shell-Script, in dem wir die einzelnen Daten, wie **Titel**, **Beschreibung**, **Kathegorie** u.s.w. für YouTube definieren.
 +   $ vim /home/weather/bin/movie2youtube
 +<file bash /home/weather/bin/movie2youtube>#!/bin/sh 
 +# Script zum Hochladen der erstellten WetterWebCam-Zeitrafferfilme in Richtung youtube
 +# Das script wird wird um 23:05 Uhr via user-crontab aufgerufen!
 +#
 +# usercrontab
 +#
 +# und um 23:42Uhr die Filme bei youtube hochladen
 +#42 23 * * * /home/weather/bin/movie2youtube
 +#
 +# Django : 2013-04-02
 +#          2014-02-01
 +
 +export LANG=en_US.UTF-8
 +
 +MOVIE_DAY=`date +%d`
 +MOVIE_MONTH=`date  +%m`
 +MOVIE_YEAR=`date +%Y`
 +
 +PROG=/usr/local/bin/youtube-upload
 +EMAIL="anmeldeadresse@youtube.hell"
 +PASSWD="Dj4n901$4G33k!"
 +TITEL1="WWC-Film vom "$MOVIE_DAY"."$MOVIE_MONTH"."$MOVIE_YEAR" der Wetterstation Pliening Richtung Westen"
 +TITEL2="WWC-Film vom "$MOVIE_DAY"."$MOVIE_MONTH"."$MOVIE_YEAR" der Wetterstation Pliening Richtung Osten"
 +INFO1="WetterWebCam-Film (Zeitrafferaufnahme) der WetterWebCam mit Blickrichtung nach Westen vom "$MOVIE_DAY"."$MOVIE_MONTH"."$MOVIE_YEAR" für die Zeit von 04:00 - 23:00 Uhr der Wetterstation Pliening. Der Kurzfilm ist mit Hintergrundmusik - Titel Astralia aus dem Album VoRTeX von Joakim YAMA unterlegt. 
 +cc-by-nc-sa (http://www.jamendo.com/de/track/84070/astralia)
 +
 +Standort der Wetterstation: http://www.openstreetmap.org/?mlat=48.1987&mlon=11.7980&zoom=12
 +aktuelle Wetterwerte und live Webcambilder gibt es hier: http://wetterstation-pliening.info"
 +
 +INFO2="WetterWebCam-Film (Zeitrafferaufnahme) der WetterWebCam mit Blickrichtung nach Osten vom "$MOVIE_DAY"."$MOVIE_MONTH"."$MOVIE_YEAR" für die Zeit von 04:00 - 23:00 Uhr der Wetterstation Pliening. Der Kurzfilm ist mit Hintergrundmusik - Titel Astralia aus dem Album VoRTeX von Joakim YAMA unterlegt.
 +cc-by-nc-sa (http://www.jamendo.com/de/track/84070/astralia)
 +
 +Standort der Wetterstation: http://www.openstreetmap.org/?mlat=48.1987&mlon=11.7980&zoom=12
 +aktuelle Wetterwerte und live Webcambilder gibt es hier: http://wetterstation-pliening.info"
 +KEYWORDS="Wetter, Wetterbeobachtung, Wetterstation, Webcam, Pliening"
 +KEYWORDS_1=$KEYWORDS
 +MOVIE1="/mnt/nas/weather/movies/archive/west"_"$MOVIE_YEAR$MOVIE_MONTH$MOVIE_DAY".avi
 +MOVIE2="/mnt/nas/weather/movies/archive/ost"_"$MOVIE_YEAR$MOVIE_MONTH$MOVIE_DAY".avi
 +
 +# Upload als privates Movie mit der option --unlisted
 +$PROG --email="$EMAIL" --password="$PASSWD" --title="$TITEL1" --description="$INFO1" --category=Nonprofit --keywords="$KEYWORDS" "$MOVIE1" | grep www.youtube.com
 +
 +$PROG --email="$EMAIL" --password="$PASSWD" --title="$TITEL2" --description="$INFO2" --category=Nonprofit --keywords="$KEYWORDS" "$MOVIE2" | grep www.youtube.com
 +</file>
 +
 +Wie im Script schon vermerkt benötigen wir nun nur noch einen cronjob, der uns täglich die Filme bei YouTube hochlädt.
 +Diesen cronjob erstellen wir mit den Rechten des Wetterusers.
 +   # su - weather
 +
 +Die crontab des Useres **weather** bearbeiten wir nun mit dem folgendem Befehl:
 +   $ crontab -e
 +
 +<code>SHELL=/bin/bash
 +MAILTO="django@nausch.org"
 +#Wetterdatenupdate der Webcam
 +*  *  *  *  *   /usr/local/bin/cam-update.sh 1>/dev/null 2>&1
 +
 +# jede Minute ein Bild für den Wetterfilm abspeichern
 +* 4-22 * * * /usr/local/bin/cam4mov+.sh 1>/dev/null 2>&1
 +
 +# um 23:01 Uhr die Filme erstellen
 +1 23 * * * /usr/local/bin/pics2movie.sh 1>/dev/null 2>&1
 +
 +# und um 23:42 Uhr die Filme bei youtube hochladen
 +42 23 * * * /home/weather/bin/movie2youtube
 +</code>
 +Um 23:42 Uhr wird nun unser Script jeden Tag gestartet und die Filme bei YouTube eingestellt. 
 +
 +====== Links ======
 +  * **[[wiki:start#wetterbeobachtung_wview_stormforce_wxtoimg|Zurück zu >>Wetterbeobachtung (Wview, Stormforce, WxtoImg)<<]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
 +
 +~~AUTOTWEET:~~
  • wetter/mobotix/movie.txt
  • Zuletzt geändert: 31.10.2023 18:32.
  • von 127.0.0.1