Я делаю программу, которая позволяет мне записывать видео, используя библиотеку rapsberry pi camera для python, есть одна небольшая проблема, когда вы запускаете camera = picamera.PiCamera()
, камера включена и используется до конца программы, то, что я хотел бы сделать, это включить ее только при записи и остановке, когда запись будет выполнена, но все-таки сохранит мою программу.Глобальная переменная в python, инициализация и завершение
Что мне нужно: Как создать глобальную переменную для picamera
и как ее закончить.
часть моего кода, релевантно:
camera = picamera.PiCamera()
camera.resolution = (1920, 1080)
filename = ""
#Start recording video into raw file
def start_record():
print("Starting recording");
reset_tmp()
global filename
filename = "vid/" + str(int(time.time()));
camera.start_recording(filename+".h264");
#Stop recording and convert h264 raw file to mp4 and remove raw file
def stop_record():
print("Stopping recording");
reset_tmp()
global filename
camera.stop_recording()
os.system("MP4Box -fps 30 -add "+filename+".h264"+" "+filename+".mp4");
os.system("rm "+filename+".h264");
Обновленная версия коды, функциональный для тех, кто ищет решения заголовка необходимо использовать del
ключевое слово, чтобы избавиться от переменных, но picamera
библиотеки функция называется .close()
прекратить объект, вот мой фиксированный код:
camera = None
filename = ""
#Start recording video into raw file
def start_record():
print("Starting recording");
reset_tmp()
global filename
filename = "vid/" + str(int(time.time()));
global camera
camera = picamera.PiCamera()
camera.resolution = (1920, 1080)
camera.start_recording(filename+".h264");
#Stop recording and convert h264 raw file to mp4 and remove raw file
def stop_record():
print("Stopping recording");
reset_tmp()
global filename
global camera
camera.stop_recording()
camera.close()
os.system("MP4Box -fps 30 -add "+filename+".h264"+" "+filename+".mp4");
os.system("rm "+filename+".h264");
поставить строку, которая начинается запись внутри функции start_record. – dbliss
Это не работает, потому что мне нужно получить доступ к той же переменной внутри другой функции – Iceberg
Я бы порекомендовал потратить некоторое время, чтобы посмотреть, как работают функции, и как передавать параметры между ними. – Chris