-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
69 lines (57 loc) · 1.69 KB
/
main.py
File metadata and controls
69 lines (57 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
import time
import logging
from stream.produce import CameraProducer
from utils.config import ConfigLoader
from utils.restart import restart_script
from web.server import StreamingServer
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
handlers=[
logging.StreamHandler(),
logging.FileHandler("log.txt"),
]
)
log = logging.getLogger(__name__)
def main():
os.nice(0)
while True:
config = ConfigLoader()
config.clear_refresh()
# Start one producer per camera
producers = []
for cam_index in config.cameras:
p = CameraProducer(
cam_index,
width=config.camera_width,
height=config.camera_height,
fps=config.camera_fps,
motion_area=config.motion_contour_area,
config=config,
)
p.start()
producers.append(p)
# Give producers a moment to register their FrameBuffers
time.sleep(0.2)
# Start the web server
server = StreamingServer(
host=config.server_host,
port=config.server_port,
config=config,
)
server.start()
# Wait until a settings save triggers a reload
try:
while not config.check_refresh():
time.sleep(0.5)
except KeyboardInterrupt:
log.info("Interrupted... shutting down.")
break
log.info("Config reload requested ...restarting...")
for p in producers:
p.stop()
server.stop()
restart_script()
if __name__ == "__main__":
main()