首页 > 解决方案 > 读取多个 rstp 流并使用 opencv 写入磁盘时延迟和 fps 下降

问题描述

我有几个流。我尝试将它们完全写入磁盘。这是我使用的脚本 -

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 个流并将它们写入磁盘?

标签: pythonopencvimage-processingvideo-streamingrtsp

解决方案


推荐阅读