def _create_reader(self): """ Sets up the video reader instance """ if self.config.get("video", "recording_plugin") == "ffmpeg": # Set the capture source for ffmpeg from recorders.ffmpeg_reader import ffmpeg_reader self.internal = ffmpeg_reader( self.config.get("video", "device_path"), self.config.get("video", "device_format")) elif self.config.get("video", "recording_plugin") == "pyv4l2": # Set the capture source for pyv4l2 from recorders.pyv4l2_reader import pyv4l2_reader self.internal = pyv4l2_reader( self.config.get("video", "device_path"), self.config.get("video", "device_format")) else: # Start video capture on the IR camera through OpenCV self.internal = cv2.VideoCapture( self.config.get("video", "device_path")) # Force MJPEG decoding if true if self.config.getboolean("video", "force_mjpeg", fallback=False): # Set a magic number, will enable MJPEG but is badly documentated self.internal.set(cv2.CAP_PROP_FOURCC, 1196444237) # Set the frame width and height if requested self.fw = self.config.getint("video", "frame_width", fallback=-1) self.fh = self.config.getint("video", "frame_height", fallback=-1) if self.fw != -1: self.internal.set(cv2.CAP_PROP_FRAME_WIDTH, self.fw) if self.fh != -1: self.internal.set(cv2.CAP_PROP_FRAME_HEIGHT, self.fh)
if label_in != "": label = label_in[:24] # Prepare the metadata for insertion insert_model = { "time": int(time.time()), "label": label, "id": numberId, "data": [] } # Check if the user explicitly set ffmpeg as recorder if config.get("video", "recording_plugin") == "ffmpeg": # Set the capture source for ffmpeg from recorders.ffmpeg_reader import ffmpeg_reader video_capture = ffmpeg_reader(config.get("video", "device_path"), config.get("video", "device_format")) elif config.get("video", "recording_plugin") == "pyv4l2": # Set the capture source for pyv4l2 from recorders.pyv4l2_reader import pyv4l2_reader video_capture = pyv4l2_reader(config.get("video", "device_path"), config.get("video", "device_format")) else: # Start video capture on the IR camera through OpenCV video_capture = cv2.VideoCapture(config.get("video", "device_path")) # Force MJPEG decoding if true if config.getboolean("video", "force_mjpeg", fallback=False): # Set a magic number, will enable MJPEG but is badly documentated video_capture.set(cv2.CAP_PROP_FOURCC, 1196444237) # Set the frame width and height if requested