如何使用openCV和python从流中逐帧获取视频

时间:2016-03-28 15:13:35

标签: python sockets opencv video frame

我正在使用VLC媒体播放器使用http来传输.mp4视频。 Streaming工作正常(我能够使用另一个VLC实例附加到此流)。 现在我想使用OpenCV和python 2.7连接到这个流,并逐帧获取视频。

这是修改后的教程代码(与本地文件完全兼容):

<code>
import numpy as np
import cv2    
address = '10.0.0.71' # this is my stream ip address
port = 8080 # this is stream port

# should I use socket somehow?
# found this somewhere, no idea what this do
# import socket
# msocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
# msocket.connect((address, port))

cap = cv2.VideoCapture('file.mp4') # how to use VideoCapture with online stream?     

# just showing video to screen
while(cap.isOpened()):
    ret, frame = cap.read()
    cv2.imshow('frame', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

请帮忙。

2 个答案:

答案 0 :(得分:1)

http://answers.opencv.org/question/24154/how-to-using-opencv-api-get-web-video-stream/

你应该只能cap = cv2.VideoCapture('yourStreamURIHere')

如果您需要登录流,例如某些流在127.0.0.1,用户名为:hello,密码:goodbye:

cap = cv2.VideoCapture('http://hello:goodbye@127.0.0.1/?action=stream?otherparamshere)

答案 1 :(得分:0)

我有点晚了,但我创建了功能强大且线程化的VidGear视频处理python库,现在提供了NetGear API,该库专门用于在网络上互连系统之间同步传输视频帧通过ZmQ消息传递系统实时进行。 有关用法示例,请在此处查看我的详细答案: https://stackoverflow.com/a/57205019/10158117