Hallo zusammen,
mit diesem
from datetime import datetime
from pathlib import Path
from subprocess import run
from ftplib import FTP
from time import sleep
import picamera
VIDEO_PATH = Path("/home/ich-bins/motioneye/Camera1")
VIDEO_FORMAT = [".h264", ".mp4"]
RECORDING_TIME = 10
def record_video(camera, date_time):
print("Start Video-Aufnahme -", date_time)
video_file = VIDEO_PATH.joinpath(f"{date_time}{VIDEO_FORMAT[0]}")
camera.start_recording(str(video_file))
camera.wait_recording(RECORDING_TIME)
camera.stop_recording()
return video_file
def transfer(video_file):
new_video_file = video_file.with_suffix(VIDEO_FORMAT[0])
with FTP('192.168.178.1','Ich-Bins','Password') as ftp, open(new_video_file, 'rb') as file:
ftp.storbinary(f'STOR {new_video_file.name}', file)
def change_video_format(video_file):
new_video_file = video_file.with_suffix(VIDEO_FORMAT[1])
run(["MP4Box", "-fps", "30", "-add", video_file, new_video_file], check=True)
def h264_entfernen(video_file):
video_file.unlink()
def main():
camera = picamera.PiCamera()
camera.resolution = (1920, 1080)
camera.framerate = 30
camera.brightness = 65
while True:
date_time = datetime.now().strftime("%Y%m%d_%H%M%S")
camera.annotate_text = date_time
video_file = record_video(camera, date_time)
date_time = datetime.now().strftime("%H:%M:%S")
print("Ende Video-Aufnahme - ", date_time)
transfer(video_file)
date_time = datetime.now().strftime("%H:%M:%S")
print("h264-Transfer beendet - ", date_time)
change_video_format(video_file)
h264_entfernen(video_file)
date_time = datetime.now().strftime("%H:%M:%S")
print("Video-Aufnahme konvertiert -", date_time)
sleep(10)
if __name__ == "__main__":
main()
Alles anzeigen
wird mit der Funktion record_video ein 10 sec. Video im Format h264 aufgenommen und im Ordner /home/ich-bins/ gespeichert.
Die Funktion transfer überträgt das h264-Video per FTP in ein NAS.
Die Funktion change_video_format erzeugt aus dem h264-Video ein mp4-Video und speichert es im Ordner /home/ich-bins/.
Die Funktion h264_entfernen löscht das h264-Video im Ordner /home/ich-bins/.
Der Transfer des 10 Sekunden h264 Videos und das anschließende Wandeln in das mp4-Format dauern zusammen ca. 11 Sekunden. Erst danach ist eine weitere Aktion möglich.
Kann man die Funktion transfer und die Funktion change_video_format ein zweites Script auslagern und im ersten Script nach der Funktion record_video starten, so dass im ersten Script sofort wieder die nächste Video-Aufnahme gestartet werden kann?
Viele Grüße
Ich Bins