...Aber... Das eine hat nichts mit dem anderen zu tun. Wir reden aneinander vorbei. Ich hab den Part den Du falsch verstanden hast zitiert. picamera war eine ganz andere Geschichte - Du hast das in 4 Fragen aufgeteilt (Beitrag#13) und wolltest auch zu exakt 4 Punkten eine Antwort, picamera war die 3.Frage, das was du falsch verstanden hast war aber die 1..
Und was du jetzt geschrieben hast von wegen "weiß das Script nicht mehr" ist Quatsch.
Solange es im selben Namespace liegt und nicht überschrieben wurde werden keine Variablen einfach so vergessen. Es macht absolut gar kein Sinn camera = picamera.PiCamera() etc. mit in die Dauerschleife zu setzen - bei solch einer Aussage scheint Dir offensichtlich nicht klar zu was das dann bewirken würde? Wieso sollte man picamera.PiCamera() ständig neu initialisieren? Eine Dauerschleife kann auf die vorher und ausserhalb der Schleife definierten Objekte, Variablen und Konstanten zugreifen - wenn sie das nicht kann, weil die Dauerschleife in einer anderen Funktion steckt, muss etwas an der Funktion geändert werden dass sie es kann => Broken By Design.
import os.path
import picamera
from time import sleep
from datetime import datetime
def init_camera():
camera = picamera.PiCamera()
camera.resolution = (768, 1024)
camera.rotation = 270
return camera
def record_video(cam, path, duration):
cam.start_recording(path)
sleep(duration)
cam.stop_recording()
def main():
BASE_PATH = '/home/pi/Videos/'
kamera = init_camera()
try:
while True:
filename = os.path.join(BASE_PATH, datetime.now().strftime("%Y.%m.%d - %H-%M"), '.h264')
record_video(kamera, filename, 5)
print('Record File: {}'.format(filename))
sleep(60)
except (KeyboardInterrupt, SystemExit):
kamera.close()
if __name__ == '__main__':
main()
Alles anzeigen
In jeder Funktion hat das camera Objekt einen anderen "namen" - was ich hier nur gemacht habe um es Dir zu verdeutlichen.