Я читаю потоки rtsp в нашей локальной сети. Когда это один или два потока, все работает гладко, но когда я пробую более двух потоков, у меня появляется серый экран, на котором видно несколько пикселей.
cap = cv2.VideoCapture(rtsp_uri)
cap.set(cv2.CAP_PROP_BUFFERSIZE, 2)
fps = cap.get(cv2.CAP_PROP_FPS)
delay_after_each_frame = 1/fps
print(delay_after_each_frame)
while True:
try:
ret, frame = cap.read()
except:
pass
if self.stopper[camera_id]:
del self.stopper[camera_id]
return
if not ret:
continue
frame = cv2.cvtColor(src=frame, code=cv2.COLOR_BGR2RGB)
frame = cv2.resize(
frame,
(self.config.frame_width, self.config.frame_height)
)
queue.enqueue(frame)
time.sleep(delay_after_each_frame)
здесь я использовал очередь для хранения кадров, и этот скрипт выполняется в потоке.
Есть ли способ чтения потоков с нескольких камер одновременно без этих серых рамок.
Вот такой кадр я получаю.
[img]https://i. stack.imgur.com/vyaLS.png[/img]
код для нескольких потоков и вывода.
for camera_id in self.config.get_camera_ids():
if camera_id not in self.threads:
self.threads[camera_id] = Thread(
target=self.process_rtsp_stream,
args=(self.config.get_rtsp(camera_id),
self.queues[camera_id], camera_id)
)
self.threads[camera_id].daemon = True
self.threads[camera_id].start()
# remove thread for deleted cameras
for camera_id in self.threads:
if camera_id not in self.config.get_camera_ids():
del self.threads[camera_id]
Подробнее здесь: https://stackoverflow.com/questions/767 ... -more-rtsp