Python:将流转换为opencv(无gstreamer)

问题描述 投票:0回答:1

我可以使用以下代码成功捕获网络摄像机的帧:

os.system("C:/Python37/ffmpeg/bin/ffmpeg.exe -i rtsp://admin:[email protected]:554/onvif1 -codec copy -f mpegts udp://127.0.0.1:3000 &")

问题是我只是不知道如何在Opencv上使用这些框架,因为当我运行上面的代码时,没有其他(之后)运行。就像一个循环。

没有gstreamer,有没有办法在Opencv上使用此转换后的流?

我相信,由于缺少gstreamer,我不能直接将RTSP地址直接传递给Opencv-永远行不通。

PS:我已经尽一切努力使Windows 8.1上的gstreamer-完全没有成功。

python opencv gstreamer
1个回答
0
投票

通过设置以下环境变量,我能够使用Python中的OpenCV 4.0.0(使用FFMPEG构建)解决打开RTSP流的问题:

import os
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;udp"

FFMPEG默认为TCP传输,但是某些RTSP提要是UDP,因此这为FFMPEG设置了正确的模式。

然后使用:

cv2.VideoCapture(<stream URI>, cv2.CAP_FFMPEG)

ret, frame = cap.read()

while ret:
    cv2.imshow('frame', frame)
    # do other processing on frame...

    ret, frame = cap.read()
    if (cv2.waitKey(1) & 0xFF == ord('q')):
        break

cap.release()
cv2.destroyAllWindows()

照常。

© www.soinside.com 2019 - 2024. All rights reserved.