Verarbeitung von Videodateien
Hostname: agalchynis
Produktname: Raspberry Pi 3 Model B
Prozessor: ARMv7 Processor rev 4 (v7l)
Taktung/Kapazität: 1200MHz
Arbeitsspeicher: 922MiB
IP-Adresse: ip=192.168.178.51
AGALCHYNIS wurde nach dem Totalausfall der Wetterstation WS1030 eine neue Aufgabe zugeteilt. Ähnlich wie DENDROBATES verarbeitet er ausschließlich die von einer IP-Camera erzeugten Videos aus einem Igelkasten. Er verarbeitet die auf einem CIFS-Laufwerk bewegungsabhängig gepeicherten Dateien zu einem zusammengefaßten Video der jeweils vergangenen Stunde und stellt die dem INTRANET und dem Webserver zur Verfügung. Die Dateien bezieht von der als FTP-Server agierenden NFS-Station NAS1 im Intranet.
Er deckt damit die Kameras IPC3 und IPC5 ab, IPC3 nimmt Bewegungen innerhalb des Igelkastens auf, IPC5 ist auf den Eingangsbereich ausgegerichtet.
Die Verarbeitung ist im Prinzip einfach:
Ein stündlich gestarteter Cronjob startet ein BASH-Script, dieses ermittelt, ob für die aktuelle Stunde Videos vorliegen oder nicht. Die Prüfung erfolgt anhand der Vorgaben des Kameraherstellers über die Verzeichnisstruktur und Namensgebung der zu speichernden Aufnahmen. In diesem Fall gibt der Hersteller DAHUA folgendes vor:
FTP-Verzeichnis des Servers (hier /home/pi/Share/Igel/Igel1 auf dem Server ESCULENTA)
Unterverzeichnis mit der Vorgabe des Kameranmens, hier habe ich die Kamera mit IPC3 bezeichnet.
Ein weiteres Unterverzeichnis mit der Datumsangabe, hier die Vorgabe YYYY-MM-DD, also Jahr, Monat, Tag.
Ein weiteres Unterverzeichnis mit dem Namen XXhour, das XX steht hier für die Stunden, also 8 Uhr würde dann 08hour heißen.
Schließlich noch ein Verzeichnis, diese Vorgabe scheint noch aus Vorgängermodellen zu stammen: dav.
Wechselt man in dieses Verzeichnis, findet man alle innerhalb der gewählten Stunde erzeugten Videos.
Beispiel:
Unter diesen Vorgaben wird mit dem Script ip3hour.sh nun festgestellt, ob zur jeweils vergangenen Stunde Videos aufgezeichnet wurden. Wenn ja, dann benennt das Script die Dateien der vergangenen Stunde um (Format Zahl.mp4) und speichert sie in einem Arbeitsverzeichnis. Dort können diese Dateien 1.mp4, 2.mp4 usw. (je nachdem wie viele Videos erzeugt wurden) dann mit ffmpeg und der Option "concatenate" zu einem Video der gesamten vergangenen Stunde zusammengefaßt werden. In einem weiteren Schritt wird dann diese MP4-Datei für den schnelleren Gebrauch auf das Format 640-480 Pixel "geschrumpft" und die Dateigröße für Kopien, aber auch für den FTP-Transport erheblich verkleinert.
So wird aus der zuerst erzeugten Datei 05-06.mp4 (also Videos von 05:00 Uhr bis 06:00 Uhr) mit einer Größe von 368379319 b eine Datei 146998931 b, also ca. 40 %, erzeugt. Dieser Vorgang kann einen ziemlichen Zeitaufwand bedeuten, aber man muß diese Dateien ja nicht unmittelbar nach der Erzeugung sehen.
Auszug aus der Logdatei:
Programmlaufzeit: 0 Tage, 1 Stunden, 46 Minuten und 2 Sekunden.
Ich verarbeite die Datei: 21072022-Igelhaus-05-06.mp4
Dateigröße: 140 MiB
Videolaufzeit: 44 Minuten und 57 Sekunden
Programmlaufzeit insgesamt: 0 Tage, 1 Stunden 51 Minuten und 54 Sekunden.
- Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '05-06.mp4':
- Output #0, mp4, to '21072022-Igelhaus-05-06.mp4':
Ein paar Auswertungen werden von dem Script auch erstellt: Werte wie Dateigröße, Abspieldauer, verfügbaren Plattenplatz etc. werden in eine Logdatei geschrieben, aber auch mögliche Fehlermeldungen.
Und so sieht ein solches Script aus, einiges an Variabeln und Kommentaren könnte noch überarbeitet werden, zur Zeit erfüllt es aber seine Aufgabe.
https://www.commentum.de/Codebeispiele/icp3hour.html
https://www.commentum.de/Codebeispiele/icp3hour.txt
#!/bi/bash##################################################################################### #ipc3hour.sh Kamera IPC3, Igelhaus, Aufnahme vom Innenbereich # Sammelt die jeweils in der vergangenen Stunde aufgelaufenen Videodateien ein, # ändert die Dateinamen und fügt sie zu einem Video zusammen. # Diese können nach Ablauf des Tages zu einem Tagesvideo zusammngefaßt werden. n# Neuer Kameratyp (Oktober 2021) dahua DH-IPC-K42AP # Script wird jede Stunde zur 5. Minute mittels Crontab gestartet. # Änderungen an der Verzeichnisstruktur Januar 2022 # Erweiterung um den Versand auf den Webserver im Februar 2022, SFTP # Änderung der Ausgabedatei für den Webserver auf Dateinamen V640480.mp4 16.02.2022 # Änderungen an den Logdateien: 14.03.2022 # Umstrukturierung der Rechnerumgebung: Programmumzug auf den Raspberry DENDROBATES von AGALCHYNIS # 18.03.2022 leichte Korrekturen zur Anpassung der Logfiles # 21.03.2022 Erweiterte Korrekturen der Logfiles, Umsetzung des Programms auf AGALCHYNIS (IPC5) # 22.03.2022 Überarbeitung des sftp-Zuganges zur Telekom # 23.05.2022 Anpassung an die (vorübergehend) am Eingang des Igelhauses angebrachte Kamera # 24.05.2022 Verteilung auf anderen Rehner zur Sicherung # 24.05.2022 Einbindung ESCULENTA als Fileserver IPC2, IPC3, IPC4, IPC5 gegen MANTELLA # 07.06.2022 Erneute Änderung des Scripts wegen Wegfall des Servers Osteopilus ############################################################################################ # Variabeln # Allgemein # Vorsicht, diese Variable hat je nach Kameratyp einen anderen Wert videoname="-Igelhaus" # Videoname als Anhamg zu den Zeitdaten der mp4-Datei camname="IPC3" # Kameraname im Heimnetzwerk today=$(date '+%d-%m-%Y') videodetail=$(date '+%d%m%Y') # War entworfen für die bessere Sortierbarkeit under="_" yesterday=$(date -d "yesterday" '+%d-%m-%Y') actualhour=$(date '+%H') recactualhour=$( date '+%F_%H_%M_%S' ) starttime=$( date '+%F_%H:%M:%S' ) startscript=$( date '+%s' ) camsafedir="dav" # Auch dies ist eine Vorgabe bei Kameras des Herstellers DAHUA uns Replikas wie Blaupunkt etc. sep="/" #Trennen der Verzeichnisse texthour="hour" # Erweiterung der Stunde mit der Endung hour (von der Kamera vorgegeben) lasthour=$(date -d "-1 hours" '+%H') recdateyesterday=$(date -d "yesterday" '+%Y-%m-%d') # Die Aufzeichnungen wurden von 23-24 Uhr des Vortages erzeugt recdateactual=$(date '+%Y-%m-%d') # Aktueller Tag yesterday=$(date -d "yesterday" '+%d-%m-%Y') actualhour=$(date '+%H') recactualhour=$( date '+%F_%H_%M_%S' ) starttime=$( date '+%F_%H:%M:%S' ) TOTALSTART=$( date '+%s' ) homeshare="/home/pi/Share/NAS1/Igel/Igel1/Innenbereich" webshare="public_html/IPC/Ige11/Innenbereich" extmp4=".mp4" # Letzte Stunde muß von OKTAL auf STRING gewandelt werden lasthour=$(date -d "-1 hours" '+%H') # Parameter lasthour für die vergangene Stunde nur zum Testen ändern, Format "00" #lasthour="13" longlast="AAAA"$lasthour echo "Das Program bereitet den Start vor!" echo "Stundenstring, alt: "$longlast newlast="${longlast:4:7}" echo "Stundenstring, neu: "$newlast lasthour=$newlast # Das Haupverzeichnis ist ein Network File System auf dem Server esculenta maindir="/home/pi/Share/esculenta/Igel/Igel1"$sep$camname # Das Hauptverzeichnis für die Kamera, steht im Igelhaus im Innenbereich #sudo chown -R pi:users $maindir # Log-Dateien logname=$lasthour"-"$actualhour$videoname".txt" logfiles="logfiles" logdir=$maindir logname=$maindir$sep$logname # Setze die Vergleichsstunden echo "Programmstart: "$actualhour > $logname # Prüfe ob das Verzeichnis korrekt montiert ist if [ -d "$maindir" ]; then sudo echo "Hauptverzeichnis existiert, Bearbeitung wird fortgesetzt." >> $logname else sudo echo "Hauptverzeichnis existiert nicht, Programm wird beendet." > Fehler.txt exit 0 fi # Vorsicht, diese Variable hat je nach Kameratyp einen anderen Wert today=$(date '+%d-%m-%Y') under="_" yesterday=$(date -d "yesterday" '+%d-%m-%Y') actualhour=$(date '+%H') actualtime=$(date '+%F_%H:%M:%S' ) recactualhour=$( date '+%F_%H_%M_%S' ) starttime=$( date '+%F_%H:%M:%S' ) startscript=$( date '+%s' ) camsafedir="dav" # Auch dies ist eine Vorgabe bei Kameras des Herstellers DAHUA uns Replikas wie Blaupunkt etc. sep="/" # Trennen der Verzeichnisse texthour="hour" # Erweiterung der Stunde mit der Endung hour (von der Kamera vorgegeben) rechour=$( date '+%F_%H:%M:%S' ) # Aufnahmezeit # Den Parameter für manuellen Start für Aufnahme des Vortages von 23 - 24 Uhr festlegen # Auch diesen Parameter nur zum Testen ändern sav=".sav" extmp4=".mp4" extmkv=".mkv" camsafedir="dav" # Dies ist eine Vorgabe bei Kameras des Herstellers DAHUA und Replikas wie Blaupunkt etc. camcopydir="HOURCOPY" camdaydir="DAYCOPY" mp4hour=$videodetail$videoname # Das ist der Name der Videodatei mit Datum, aber noch ohne Zeitraum und Endung echo "Das Script zur Erzeugung der Videozusammenfassung wurde um "$starttime" gestartet!" > $logname echo "Ich werde die Daten zur Stunde: "$lasthour" verarbeiten!" >> $logname echo "Die Videodatei wird folgenden Namen tragen: "$mp4hour >> $logname # Falls die letzte Stunde 23 lautet wird in das Vortagesverzeichnis gewechselt if [[ $lasthour = "23" ]] ;then camworkdir=$maindir$sep$recdateyesterday$sep$lasthour$texthour$sep$camsafedir echo "Arbeitsverzeichnis liegt im Vortag: "$camworkdir >> $logname echo "Stundenvideo des Tages: "$recdateyesterday" zur Stunde "$lasthour" Uhr wird um "$recactualhour" erzeugt!" >> $logname else camworkdir=$maindir$sep$recdateactual$sep$lasthour$texthour$sep$camsafedir echo "Arbeitsverzeichnis liegt im aktuellen Tag: "$camworkdir >> $logname echo "Stundenvideo des Tages: "$recdateactual" zur Stunde "$lasthour" Uhr wird um "$rechour" erzeugt!" >> $logname fi # Setze die Zugriffsrechte auf pi:users #sudo chown -R pi:users $maindir $logdir $camworkdir # Setze die Variable für die Speicherung auf dem Webserver für die jeweilige Stundehourdir="" if [[ $lasthour = "00" ]] ;then hourdir="00-01" elif [[ $lasthour = "01" ]] ;then hourdir="01-02" elif [[ $lasthour = "02" ]] ;then hourdir="02-03" elif [[ $lasthour = "03" ]] ;then hourdir="03-04" elif [[ $lasthour = "04" ]] ;then hourdir="04-05" elif [[ $lasthour = "05" ]] ;then hourdir="05-06" elif [[ $lasthour = "06" ]] ;then hourdir="06-07" elif [[ $lasthour = "07" ]] ;then hourdir="07-08" elif [[ $lasthour = "08" ]] ;then hourdir="08-09" elif [[ $lasthour = "09" ]] ;then hourdir="09-10" elif [[ $lasthour = "10" ]] ;then hourdir="10-11" elif [[ $lasthour = "11" ]] ;then hourdir="11-12" elif [[ $lasthour = "12" ]] ;then hourdir="12-13" elif [[ $lasthour = "13" ]] ;then hourdir="13-14" elif [[ $lasthour = "14" ]] ;then hourdir="14-15" elif [[ $lasthour = "15" ]] ;then hourdir="15-16" elif [[ $lasthour = "16" ]] ;then hourdir="16-17" elif [[ $lasthour = "17" ]] ;then hourdir="17-18" elif [[ $lasthour = "18" ]] ;then hourdir="18-19" elif [[ $lasthour = "19" ]] ;then hourdir="19-20" elif [[ $lasthour = "20" ]] ;then hourdir="20-21" elif [[ $lasthour = "21" ]] ;then hourdir="21-22" elif [[ $lasthour = "22" ]] ;then hourdir="22-23" elif [[ $lasthour = "23" ]] ;then hourdir="23-00" else hourdir="XX" fi # Prüfe zuerst, ob das Stundenverzeichnis existiert, sonst wurden in der betreffenden Stunde gar keine Bewegungen erkannt # und somit auch keine MP4-Dateien erzeugt # Protokolliere den Start echo "Script wurde um: "$starttime" gestartet!" > $logname echo "Das Protokoll wird in die Datei: "$logname" im Verzeichnis "$logdir" geschrieben!" >> $logname echo "Arbeitsverzeichnis ist: "$camworkdir >> $logname # Prüfe, ab das Verzeichnis für die Stundenaufnahme überhaupt existiert if [ -d "$camworkdir" ]; then echo "Arbeitsverzeichnis existiert, Bearbeitung wird fortgesetzt." >> $logname else echo "Arbeitsverzeichnis existiert nicht, Programm wird beendet." >> $logname exit 0 fi # Prüfe, ob das Verzeichnis für die MP4-Dateien der vergangenen Stunden existiert # und lege es sonst neu an if [ -d $camworkdir$sep$camcopydir ] then echo "Verzeichnis für zu bearbeitende MP4 der vergangenen Stunde ist bereits vorhanden." >> $logname else echo "Lege das Verzeichnis "$camworkdir$sep$camcopydir" zur Bearbeitung der MP-Dateien der vergangenen Stunde neu an!" >> $> sudo mkdir $camworkdir$sep$camcopydir fi # Prüfe, ob das Verzeichnis für die Tageszusammenfassung der einzelnen MP-Dateien der Stunden existiert if [ -d $camworkdir$sep$camdaydir ] then echo "Verzeichnis für die zu bearbeitenden MP4-Dateien des Tages ist bereits vorhanden." >> $logname else echo "Lege das Verzeichnis "$camworkdir$sep$camdaydir" zur Bearbeitung der MP-Dateien des Tages "$today" neu an!" >> $logna> sudo mkdir $camworkdir$sep$camdaydir fi # Wechsele in das Arbeitsverzeichnis cd $camworkdir$sep$copydir # Lese Anzahl der vorhandenen Videos aus total="`ls *.mp4 | wc -l`" echo "Anzahl vorhandener Videos für den Zeitraum "$hourdir": "$total >> $logname # Lese alle vorhandenen Videos in einer Schleife und benenne sie um # Lösche Index-Dateien rm *.idx i="0" counter="1" for i in *.mp4; do oldname=$i echo "Zähler: "$counter echo "Alter Name: "$oldname newname=$counter$extmp4 echo "NeuerName: "$newname # Kopiere die umbenannten Dateien in das Berarbeitungsverzeichnis sudo cp $oldname $camworkdir$sep$camcopydir$sep$newname echo "Datei Nummer: "$counter" wird angelegt: "$camworkdir$sep$camcopydir$sep$newname >> $logname ((counter=counter+1)) # Prüfe, ob die Datei im Arbeitsvereichnis korrekt angelegt/kopiert wurde, # in diesem Fall können die vorhandenen IDX-Dateien und MP4-Dateien gelöscht werden # Sollten die umbenannten Datein nicht kopiert worden sein, wirde die Verarbeitung abgebrochen if [ -f $camworkdir$sep$camcopydir$sep$newname ] then echo "Die zu verarbeitende Datei: "$newname" wurde ín das Arbeitsverzeichnis "$camworkdir$sep$camcopydir" kopiert!" > else echo "FEHLER !!! Die MP4-Datei "$newname" wurde nicht in das Arbeitsverzeichnis "$camworkdir$sep$camcopydir"kopiert!> echo "Beende das Programm!" >> $logname exit 0 fi done # Wechsele in das Verzeichnis der umbenannten Dateien der jeweiligen Stunde cd $camworkdir$sep$camcopydir # Füge die MP4-Dateien der vergangenen Stunde zu einer Datei zusammen # Erweitere den Videonamen um den Zeitraum und die Dateiendung mp4hour=$mp4hour"-"$hourdir$extmp4 echo "Dieses Video wird aus den einzelnen Videos zusammengefügt: " $mp4hour >> $logname for f in *.mp4 ; do echo file \'$f\' >> mp4list.txt; done # Sortiere die erzeugte Liste in ein für ffmpeg mit concatenate gültiges Format absolut aufsteigend sort -n -k1.7,1.8 mp4list.txt > sorted.txt # Nun beginnt die Zusammensetzung der einzelnen MP4-Dateien zu einem Stundenvideo echo "Erzeuge MP4-Datei: "$mp4hour >> $logname startmp4=$( date '+%s' ) ffmpeg -safe 0 -f concat -i sorted.txt -c copy $hourdir$extmp4 stopmp4=$( date '+%s' ) secmp4=`echo "$stopmp4-$startmp4" |bc` echo "Erzeugungsdauer: "$hourdir$extmp4"in Sekunden: "$secmp4 >> $logname # Verkleinere die DateiGröße echo "Verkleinere das Format von: "$hourdir$extmp4" auf 640x480 Pixel in die Datei "$mp4hour >>$logname startmkv=$( date '+%s' ) ffmpeg -i $hourdir$extmp4 -vf "scale='min(640,iw)':'min(480,ih)'" $mp4hour #ffmpeg -i $hourdir$extmp4 -s 640x480 -b 512k -async 50 -acodec libmp3lame -ar 11025 -ab 16k $videoname$hourdir$extmkv stopmkv=$( date '+%s' ) secmkv=`echo "$stopmkv-$startmkv" |bc` echo "Konvertierungsdauer von "$hourdir$extmp4" zu "$mp4hour" in Sekunden: "$secmkv >> $logname # Schreibe Daten des Speicherverzeichnisses für die Logdatei df -h . > dirmp4.txt dirmp4='dirmp4.txt' nummer=1 while read zeile[nummer] do echo "$nummer. Zeile: ${zeile[nummer]}" nummer=$((nummer+1)) done < "$dirmp4" echo "${zeile[2]}" > dateisystem.txt # Datei mit der zweiten Zeile einlesen und Zeichenkette zerlegen IFS=" " read zeile < dateisystem.txt echo "Zeile: "$zeile set " " $zeile echo "$1 $2 $3 $4 $5 $6 $7 $8" dateisystem=$2 groesse=$3 benutzt=$4 verfuegbar=$5 verwendet=$6 arbeitsverzeichnis=$7 echo "Dateisystem: "$dateisystem >> $logname echo "Größe: "$groesse >> $logname echo "Benutzt: "$benutzt >> $logname echo "Verfügbar: "$verfuegbar >> $logname echo "Verwendet: "$verwendet >> $logname echo "Arbeitsverzeichnis: "$arbeitsverzeichnis >> $logname # Verschiebe die Datei für die Bearbeitung als Tagesvideo in das Tagesverzeichnis # Aktualisiere den Zeitpunkt der Erzeugung des Videos rechour=$( date '+%F_%H:%M:%S' ) echo "Das Video "$mp4hour" wurde um "$rechour" erzeugt!" >> $logname mv $hourdir$extmp4 $camworkdir$sep$camdaydir # Prüfe, ob das Verzeichnis für die Tageszusammenfassung der einzelnen MP-Datei der vergangenen Stunde existiert, # wenn nicht hat keine Verarbeitung stattgefunden und die weitere Verarbeitung ist sinnlos if [ -f $camworkdir$sep$camdaydir$sep$hourdir$extmp4 ] then echo "Die MP4-Datei: "$hourdir$extmp4" wurde ín das Tagesverzeichnis "$camdaydir" kopiert!" >> $logname else echo "FEHLER !!! Die MP4-Datei "$hourdir$extmp4" wurde nicht in das Tagesverzeichnis "$camdaydir"kopiert!" >> $logname echo "Hier liegt ein Problem vor. Bitte prüfen!" >> $logname #exit 0 fi # Protokolldatei stopscript=$( date '+%s' ) starttime=$startscript stoptime=$stopscript secs=`echo "$stoptime-$starttime" |bc` echo "Laufzeit bisher in Sekunden: "$secs >> $logname tage=$(($secs/86400)) stunden=$(($secs%86400/3600)) minuten=$(($secs%3600/60)) sekunden=$(($secs%60)) echo "Programmlaufzeit: "$tage" Tage, "$stunden" Stunden, "$minuten" Minuten und "$sekunden" Sekunden." >> $logname # Lösche nun die verarbeiteten Dateien im Tagesverzeichnis, die erzeugte Zusammenfassung wird danach umbenannt cd $camworkdir$sep$camcopydir echo "Ich verarbeite die Datei: "$mp4hour >> $logname # Lese die Eigenschaften der erzeugten Videodatei (MP4) ein und gebe Laufzeit und Größe aus mediainfo $mp4hour --Logfile=mp4.txt datmp4='mp4.txt' # Lese die Eckdaten der MP4-Datei ein nummer=1 while read zeile[nummer] do # echo "$nummer. Zeile: ${zeile[nummer]}" nummer=$((nummer+1)) done < "$datmp4" echo "Dateigröße: "${zeile[6]} echo "${zeile[6]}" > dateigroesse.txt echo "Videolaufzeit: "${zeile[7]} echo "${zeile[7]}" > videolaufzeit.txt # Dateigröße einlesen und Zeichenkette zerlegen IFS=" " read zeile < dateigroesse.txt ifs=" " set " " $zeile dateigroesse=$5 mb=$6 echo "Dateigröße: "$dateigroesse" "$mb >> $logname # Laufzeit einlesen und Zeichenkette zerlegen IFS=" " read zeile < videolaufzeit.txt set " " $zeile dauermin=$4 echo "Minuten: "$dauermin dauersec=$6 echo "Sekunden: "$dauersec echo "Videolaufzeit: "$dauermin" Minuten und "$dauersec" Sekunden" >> $logname # Übertragung auf den Webserver echo "Folgende Dateien sollen übertragen werden: "$mp4hour startftp=$( date '+%s' ) echo "Verbindungsaufbau mit hosting.telekom.de um "$actualtime >> $logname echo "Verbindungsaufbau mit hosting.telekom.de um "$actualtime echo "Das Stundenverzeichnis lautet: /home/www/public_html/IPC/Igel1/"$hourdir >>$logname if [ -f $camworkdir$sep$camdaydir$sep$hourdir$extmp4 ] then echo "Die MP4-Datei: "$hourdir$extmp4" liegt im Tagesverzeichnis "$camdaydir else echo "Es liegt ein Problem vor!" fi if [ -f $mp4hour ] then echo "Die MP4-Datei: "$mp4hour" liegt im Stundenverzeichnisverzeichnis "$maindir"/"$HOURCOPY >>$logname else echo "Es liegt ein Problem mit der Datei "$mp4hour" vor!" >>$logname fi export SSHPASS=DAS FTP-Passwort sshpass -e sftp -oBatchMode=no -b - admin@commentum.de@hosting.telekom.de<< ! cd public_html/IPC/Igel1/Innenbereich pwd ls put $mp4hour bye ! stopftp=$( date '+%s' ) secftp=`echo "$stopftp-$startftp" |bc` echo "Übertragungsdauer in Sekunden: "$secftp >> $logname # Verschiebe die Stundendatei zum Homeserver mv $mp4hour $homeshare # Prüfe ob Kopie werfolgreich war, dann können verarbeitete MP$ gelöscht werden cd $homeshare if [ -f ] then echo "Die zu verarbeitende Datei "$mp4hour" wurde in das Verzeichnis "$homeshare" übertragen !" >> $logname echo "Die verbliebenen MP4-Dateien werden gelöscht!" >> $logname #rm *.mp4 else echo "Die zu verarbeitende Datei "$mp4hour" wurde nicht verschoben!" >> $logname echo "Bitte den Programmstatus prüfen!" >> $logname fi cd $camworkdir # Lösche nun die bereits verabeiteten MP4 #rm *.mp4 # Protokolldatei der gesamten Laufzeit TOTALSTOP=$( date '+%s' ) echo "Startscript: "$TOTALSTART >> $logname echo "Stopscript: "$TOTALSTOP >> $logname starttime=$TOTALSTART stoptime=$TOTALSTOP secs=`echo "$stoptime-$starttime" |bc` tage=$(($secs/86400)) echo "Tage: "$tage >> $logname stunden=$(($secs%86400/3600)) echo "Stunden: "$stunden >> $logname minuten=$(($secs%3600/60)) echo "Minuten: " $minuten >> $logname sekunden=$(($secs%60)) echo "Sekunden: "$sekunden >> $logname echo "Programmlaufzeit insgesamt: "$tage" Tage, "$stunden" Stunden "$minuten" Minuten und "$sekunden" Sekunden." >> $logname
|
Die dazu gehörende Log-Datei gibt folgendes aus:
Script wurde um: 2022-07-21_16:05:13 gestartet! Das Protokoll wird in die Datei: /home/pi/Share/esculenta/Igel/Igel1/IPC3/05-16-Igelhaus.txt im Verzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3 geschrieben! Arbeitsverzeichnis ist: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav Arbeitsverzeichnis existiert, Bearbeitung wird fortgesetzt. Verzeichnis für zu bearbeitende MP4 der vergangenen Stunde ist bereits vorhanden. Verzeichnis für die zu bearbeitenden MP4-Dateien des Tages ist bereits vorhanden. Anzahl vorhandener Videos für den Zeitraum 05-06: 21 Datei Nummer: 1 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/1.mp4 Die zu verarbeitende Datei: 1.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 2 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/2.mp4 Die zu verarbeitende Datei: 2.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 3 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/3.mp4 Die zu verarbeitende Datei: 3.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 4 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/4.mp4 Die zu verarbeitende Datei: 4.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 5 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/5.mp4 Die zu verarbeitende Datei: 5.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 6 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/6.mp4 Die zu verarbeitende Datei: 6.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 7 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/7.mp4 Die zu verarbeitende Datei: 7.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 8 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/8.mp4 Die zu verarbeitende Datei: 8.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 9 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/9.mp4 Die zu verarbeitende Datei: 9.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 10 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/10.mp4 Die zu verarbeitende Datei: 10.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 11 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/11.mp4 Die zu verarbeitende Datei: 11.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 12 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/12.mp4 Die zu verarbeitende Datei: 12.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 13 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/13.mp4 Die zu verarbeitende Datei: 13.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 14 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/14.mp4 Die zu verarbeitende Datei: 14.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 15 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/15.mp4 Die zu verarbeitende Datei: 15.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 16 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/16.mp4 Die zu verarbeitende Datei: 16.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 17 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/17.mp4 Die zu verarbeitende Datei: 17.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 18 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/18.mp4 Die zu verarbeitende Datei: 18.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 19 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/19.mp4 Die zu verarbeitende Datei: 19.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 20 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/20.mp4 Die zu verarbeitende Datei: 20.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Datei Nummer: 21 wird angelegt: /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY/21.mp4 Die zu verarbeitende Datei: 21.mp4 wurde ín das Arbeitsverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/2022-07-21/05hour/dav/HOURCOPY kopiert! Dieses Video wird aus den einzelnen Videos zusammengefügt: 21072022-Igelhaus-05-06.mp4 Erzeuge MP4-Datei: 21072022-Igelhaus-05-06.mp4 Erzeugungsdauer: 05-06.mp4in Sekunden: Verkleinere das Format von: 05-06.mp4 auf 640x480 Pixel in die Datei 21072022-Igelhaus-05-06.mp4 Konvertierungsdauer von 05-06.mp4 zu 21072022-Igelhaus-05-06.mp4 in Sekunden: Dateisystem: //ESCULENTA/Share
Größe: 29G Benutzt: 22G Verfügbar: 7,8G Verwendet: 74% Arbeitsverzeichnis: /home/pi/Share/esculenta Das Video 21072022-Igelhaus-05-06.mp4 wurde um 2022-07-21_16:32:22 erzeugt! Die MP4-Datei: 05-06.mp4 wurde ín das Tagesverzeichnis DAYCOPY kopiert! Laufzeit bisher in Sekunden: 1671 Programmlaufzeit: 0 Tage, 0 Stunden, 27 Minuten und 51 Sekunden. Ich verarbeite die Datei: 21072022-Igelhaus-05-06.mp4 Dateigröße: Videolaufzeit: Minuten und Sekunden Verbindungsaufbau mit hosting.telekom.de um 2022-07-21_16:05:13 Das Stundenverzeichnis lautet: /home/www/public_html/IPC/Igel1/05-06 Die MP4-Datei: 21072022-Igelhaus-05-06.mp4 liegt im Stundenverzeichnisverzeichnis /home/pi/Share/esculenta/Igel/Igel1/IPC3/ Übertragungsdauer in Sekunden: 23 Die zu verarbeitende Datei 21072022-Igelhaus-05-06.mp4 wurde in das Verzeichnis /home/pi/Share/esculenta/Igel/Igel1/Innenbereich übertragen ! Die verbliebenen MP4-Dateien werden gelöscht! Startscript: 1658412301 Stopscript: 1658414440 Tage: 0 Stunden: 0 Minuten: 35 Sekunden: 39 Programmlaufzeit insgesamt: 0 Tage, 0 Stunden 35 Minuten und 39 Sekunden.
|
Also wurden 21 Einzelvideos zu einem Video einer Stunde zusammengefaßt.