Я работаю над многопроцессорным скриптом. И я не могу заставить его работать.
Он должен делать следующее:
def wait():
VLC приостанавливает видео на первом кадре,
def play():
при обнаружении движения одновременно должны выполняться 2 функции:
Процесс1: воспроизведение видео
def Record():
Процесс2: запись с камерой.
После завершения вышеописанного VLC снова приостанавливает видео на первом кадре в ожидании движения.
Код:
Код: Выделить всё
from gpiozero import MotionSensor
from time import sleep
from picamera2 import Picamera2
from picamera2.encoders import H264Encoder, Quality
import vlc
import datetime
from multiprocessing import Process
# Creating Instance class object
vlc_instance = vlc.Instance()
player = vlc_instance.media_player_new()
player.set_fullscreen(False)
# Define Motion Sensor
pir = MotionSensor(4)
# Camera
picam2 = Picamera2()
video_config = picam2.create_video_configuration()#main={"size":(1280,720)})
picam2.configure(video_config)
picam2.rotation = 180
encoder = H264Encoder
output = '/home/path-to-dir/Recordings/' + datetime.datetime.now().strftime('%Y-%m-%d_%H.%M.%S.h264')
def waiting():
print("Ready")
pir.wait_for_no_motion()
sleep(.1)
player.set_mrl("/home/path-to-dir/Video/Test.mp4")
player.play()
sleep(.1)
def play():
pir.wait_for_motion()
sleep(.1)
print("Motion detected")
sleep(.1)
player.set_mrl("/home/path-to-dir/Video/Test.mp4")
player.play()
sleep(.1)
def record():
print ("Start recording")
picam2.start_recording(encoder, output, quality=Quality.HIGH)
sleep(13)
picam2.stop_recording()
sleep(15)
if __name__ == "__main__":
waiting()
while True:
try:
process1 = Process(target=play)
process2 = Process(target=record)
process1=start()
process2=start()
process1=join()
process2=join()
sleep(.1)
except KeyboardInterrupt:
print("Interrupted")
break
except:
continue
[0000007f4c09b550] окно wl_xdg_shell:
Подробнее здесь: https://stackoverflow.com/questions/791 ... oesnt-work
Мобильная версия