У меня есть несколько потоков. Я пытаюсь записать их на диск. Это скрипт, который я использую -
import cv2
import os
output_dir = "/home/Desktop/stream_rec"
# Load Streams
input_cap = {}
output_cap = {}
fourcc = cv2.VideoWriter_fourcc(*'XVID')
for i in range(2, 6):
input_cap[i] = cv2.VideoCapture("rtsp://stream@10.0.0.{}".format(i))
output_cap[i] = cv2.VideoWriter(os.path.join(output_dir, f'D{i}.mp4'), fourcc, 25.0, (1080,1920)[::-1])
# Load Frames
# while all([stream.isOpened() for stream_id, stream in streams.items()]):
while True:
for stream_id, stream in input_cap.items():
# Read
ret, frame = stream.read()
# Write
output_cap[stream_id].write(frame)
# Show
# frame = cv2.resize(frame, (int(frame.shape[1]/2), int(frame.shape[0]/ 2)))
if ret:
cv2.imshow(str(stream_id), frame)
else:
break
if cv2.waitKey(1) & 0xFF == ord('q'): # Press Q to stop recording
break
# Release Caps
for i in range(2, 6):
input_cap[i].release()
output_cap[i].release()
Когда я показываю только потоки, он выглядит в реальном времени. Но когда я пытаюсь записать их на диск, частота кадров значительно падает. Как я могу показать 4 потока и записать их на диск с минимальным влиянием на частоту кадров и задержку?