Nur tagsüber Filme erstellen

  • Hallo Zusammen,

    ich möchte tagsüber (ungefähr ab 8 und bis 16 Uhr) die Kamera 10 Minuten Stückchen Filme von unserer futterstelle erstellen lassen. Die Filme sollen jeweils mit dem Datum als Name abgelegt werden und dies im Idealfall auf dem angesteckten Stick.

    Ich habe mir aus diversen Beiträgen einmal zusammengereimt, wie das klappen könnte. Hat der Code unten eine Chance zu funktionieren? Ich hoffe es ist alles richtig formatiert, kommt leider vom Handy.


    aufnahme.sh in meinem user Verzeichnis

    #!/bin/sh

    # 10-Sekunden-Video in 1080p (1920 x 1080)

    while :; do

    if [(date + %H) -ge 8]

    then

    if [(date + %H) -le 16]

    then

    raspivid -t 600 -o $(date + "%F-%H-%M").h264

    Sleep 3

    else

    sleep 300

    fi

    else

    sleep 300

    fi

    done


    Mit chmod +x aufnahme.sh lauffähig machen


    rc.local in /etc/ erweitern um

    sh /home/pi/aufnahme.sh


    Vielen Dank für Eure Hilfe!

  • Du willst, in der Zeit zwischen 8:00 Uhr und 16:00 Uhr, alle 10 Minuten und drei Sekunden einen Film von 10 Minuten machen?


    Es ist nach 8, aber vor 16 Uhr:

    Code
    1. if [(date + %H) -le 16]
    2. then
    3.      raspivid -t 600 -o $(date + "%F-%H-%M").h264
    4.      Sleep 3
    5. else
    6.      sleep 300
    7. fi

    600 Sekunden Film, dann 3 Sekunden Pause, dann 60 Sekunden Film, ...


    Die 5 Minuten 'sleep' im 'else' werden ausgeführt, wenn es später als 16 Uhr ist.


    Der Vorschlag, den Film per Cron zu machen, kam ja schon.

    Man könnte jetzt in dem Script, das den Film macht, noch eine Abfrage einbauen, ob es auch innerhalb der Zeit zwischen Sonnenaufgang dn Untergang ist, aber das ist erst einmal egal.


    Wenn der Film nicht 'sofort' bereitstehen soll, könnte man ihn aus Fotos zusammenbauen.

    Also jede Minute ein Bild machen und die (per ffmpeg) zu einem Film zusammenschieben.


    Ober eben einen Film erstellen, doch deine Zeiten erstellen 10Minuten-Filme. Die könnte man auch per Raspivid automatisch machen, indem man einstellt, dass er 10-Minuten-Filme machen soll, die durchnummeriert werden (Parameter -W, wenn ich mich nicht irre)

    Wenn man will, könnte man die dann auch, nachdem sie fertig sind, mit dem Tagesdatum und Uhrzeit als Dateinamen, versehen.

    Selber denken,
    wie kann man nur?

  • Also die Idee war, nach 8 Uhr (dafür soll das erste if sein) und so lange es noch nicht 16 Uhr ist(dafür das zweite if) soll der 10 Minuten Filmen, dann 3 sek warten, damit auch sicher alles wieder beendet ist und dann die Schleife noch mal laufen und 10 min Filmen.

    Danach habe ich dann einen Haufen 10 Minuten Filme aus der Zeit 8-16 Uhr. Am nächsten Tag kommen dann die nächsten Filme dabei.

    Ich habe allerdings jetzt mitgenommen, dass ich das besser mit einem cronjob mache und versuche gerade durch die Dokumentation zu steigen.

  • Versteh ich das so richtig? Kann das sO vielleicht klappen?

    #M S T M W Befehl

    #----------------------------------------------------

    */10 8-16 * * * raspivid -t 597 -o $(date + "%F-%H-%M").h264 > /dev/null

    #-----------------------------------------------------------------------------------


    Also: zwischen 8-16 Uhr alle 10 Minuten einen 9:57 min Film mit dem aktuellen Datum und Uhrzeit als Titel erstellen...

  • Fast, Trag auf alle Fälle absolute Pfade ein (auf meinem Pi wäre das z.B.)

    Code
    1. pi@raspberrypi:~ $ which raspivid
    2. /usr/bin/raspivid

    und auch den kompletten Pfad, wo die Datei gespeichert werden soll. Der Befehl muss in der shell auch anstandslos funktionieren. Solange er das nicht macht, geht's auch über cron nicht.


    Deine raspivid Optionen stimmen nicht (t in ms // date). Probier mal so (/pfad/zum/verzeichnis musst Du natürlich mit Deinen Angaben austauschen):


    Code
    1. /usr/bin/raspivid -o /pfad/zum/verzeichnis/`/bin/date +%Y-%m-%d-%H-%M`.h264 -t 597000
  • Vielleicht könnt ihr ja noch einmal helfen. Das Filmen hat soweit geklappt, auch in die Datei auf dem Stick. Jetzt will ich das ganze in den crontab schreiben und habe es mit crontab -e rein geschrieben. Wenn ich crontab -l aufrufe steht da auch meine Zeile, aber es wird nicht gestartet. Muss man da noch etwas anderes beachten?

  • Also nach Aufruf von crontab -l kommt da:

    .. (Mehrere Zeilen Kommentare)

    # m h dom mon dow command

    */3 8-23 * * * /usr/bin/raspivid -o /media/pi/2EC0-28FE/$(/bin/date +%Y-%m-%d-%H-%M).h264 -t 59700 >/dev/null

    #


    wenn ich /usr/bin/raspivid -o /media/pi/2EC0-28FE/$(/bin/date +%Y-%m-%d-%H-%M).h264 -t 59700 einfach so in der Shell eingebe erscheint für 1 Minute das Kamerabild auf dem screen und wenn die Shell wieder da ist, liegt auf dem stick die gewünschte Datei

  • Dann mach es anders, die crontab kommt mit dem date nicht klar.


    leg ein Skript mit dem Befehl an.


    nano /home/pi/aufnahme


    Das kommt rein

    Shell-Script
    1. #!/bin/bash
    2. /usr/bin/raspivid -o /media/pi/2EC0-28FE/$(/bin/date +%Y-%m-%d-%H-%M).h264 -t 59700


    Mit STRG-O speichern, STRG-X beendet, dann ausführbar machen:


    chmod +x /home/pi/aufnahme


    In die crontab trägst Du ein:


    */3 8-23 * * * /home/pi/aufnahme

  • Vielen Dank, es hat funktioniert. :-) Das war das Problem.

    Jetzt habe ich nur noch ein anderes Problem, er startet mit filmen und beendet es nicht mehr. Da steige ich allerdings selbst noch hinter. Vielleicht hab ich ja eine null bei den ms zu viel. :-)


    Edit: Es war tatsächlich eine null zu viel. :-) Jetzt geht alles. Danke noch einmal für den großen Einsatz!