Compare commits

..

10 Commits

Author SHA1 Message Date
Blake Blackshear
c377b0b3bc ensure detection_start doesnt change values between conditions 2020-04-25 07:40:12 -05:00
Blake Blackshear
ba272fc0e8 drop plasma store stderr logs 2020-04-24 07:48:49 -05:00
Blake Blackshear
7ccf2ef694 resize to aspect ratio of frame 2020-04-24 07:48:19 -05:00
Blake Blackshear
68bfa6010d skip frames in the capture thread instead 2020-04-19 10:07:27 -05:00
Blake Blackshear
a810c56811 expose frame time at each step of processing 2020-04-19 07:49:23 -05:00
Blake Blackshear
5333b8ae1b ensure the previous frame is deleted when the new one is stored 2020-04-10 07:05:07 -04:00
Blake Blackshear
2bc57d271c move ffmpeg capture to a separate thread and use a queue 2020-03-14 15:32:51 -05:00
Blake Blackshear
8507bbbb31 make object processor resilient to plasma failures 2020-03-13 16:35:58 -05:00
Blake Blackshear
b6fcb88e5c remove sharedarray references 2020-03-13 15:50:27 -05:00
Blake Blackshear
d3cd4afa65 handle various scenarios with external process failures 2020-03-09 21:12:19 -05:00
2 changed files with 2 additions and 15 deletions

View File

@@ -7,7 +7,7 @@ RUN apt -qq update && apt -qq install --no-install-recommends -y \
software-properties-common \
# apt-transport-https ca-certificates \
build-essential \
gnupg wget unzip tzdata \
gnupg wget unzip \
# libcap-dev \
&& add-apt-repository ppa:deadsnakes/ppa -y \
&& apt -qq install --no-install-recommends -y \

View File

@@ -84,8 +84,6 @@ class CameraWatchdog(threading.Thread):
while True:
# wait a bit before checking
time.sleep(10)
now = datetime.datetime.now().timestamp()
# check the plasma process
rc = self.plasma_process.poll()
@@ -96,7 +94,7 @@ class CameraWatchdog(threading.Thread):
# check the detection process
detection_start = self.tflite_process.detection_start.value
if (detection_start > 0.0 and
now - detection_start > 10):
datetime.datetime.now().timestamp() - detection_start > 10):
print("Detection appears to be stuck. Restarting detection process")
self.tflite_process.start_or_restart()
elif not self.tflite_process.detect_process.is_alive():
@@ -129,17 +127,6 @@ class CameraWatchdog(threading.Thread):
camera_capture.start()
camera_process['ffmpeg_process'] = ffmpeg_process
camera_process['capture_thread'] = camera_capture
elif now - camera_process['capture_thread'].current_frame > 5:
print(f"No frames received from {name} in 5 seconds. Exiting ffmpeg...")
ffmpeg_process = camera_process['ffmpeg_process']
ffmpeg_process.terminate()
try:
print("Waiting for ffmpeg to exit gracefully...")
ffmpeg_process.communicate(timeout=30)
except sp.TimeoutExpired:
print("FFmpeg didnt exit. Force killing...")
ffmpeg_process.kill()
ffmpeg_process.communicate()
def main():
# connect to mqtt and setup last will