From d6e35cfd1de3ffcff6fd22e0ec5e7e10fae440e0 Mon Sep 17 00:00:00 2001 From: Joseph DiGiovanni Date: Tue, 29 Aug 2023 23:01:29 -0400 Subject: [PATCH] Add configurable device frame rate --- howdy/src/config.ini | 6 ++++++ howdy/src/recorders/video_capture.py | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/howdy/src/config.ini b/howdy/src/config.ini index 27ab823..789347a 100644 --- a/howdy/src/config.ini +++ b/howdy/src/config.ini @@ -86,6 +86,12 @@ force_mjpeg = false # OPENCV only. exposure = -1 +# Specify frame rate of the capture device. +# Some IR emitters will not function properly at the default framerate. +# Use qv4l2 to determine an appropriate value. +# OPENCV only. +device_fps = -1 + # Rotate captured frames so faces are upright. # 0 Check landscape orientation only # 1 Check both landscape and portrait orientation diff --git a/howdy/src/recorders/video_capture.py b/howdy/src/recorders/video_capture.py index d8552e7..15888a5 100644 --- a/howdy/src/recorders/video_capture.py +++ b/howdy/src/recorders/video_capture.py @@ -124,6 +124,12 @@ class VideoCapture: self.config.get("video", "device_path"), cv2.CAP_V4L ) + # Set the capture frame rate + # Without this the first detected (and possibly lower) frame rate is used, -1 seems to select the highest + # Use 0 as a fallback to avoid breaking an existing setup, new installs should default to -1 + self.fps = self.config.getint("video", "device_fps", fallback=0) + if self.fps != 0: + self.internal.set(cv2.CAP_PROP_FPS, self.fps) # Force MJPEG decoding if true if self.config.getboolean("video", "force_mjpeg", fallback=False):