Commentum

Der Einfall, die Lüge, die Erdichtung

Verarbeitung von Videodateien

Agalchynis. Rotaugenlaubfrosch

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:

Igelcam1
ipcam2



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.


Zurück



E-Mail
Infos