2011-05-11 128 views
2

我有问题从我的IP摄像头获取视频流。我使用opencv从它获取图像。这里是我的代码:Python和IP摄像头的问题

import sys 
import cv 

video="http://prot-on.dyndns.org:8080/video2.mjpeg" 
capture =cv.CaptureFromFile(video) 
cv.NamedWindow('Video Stream', 1) 
while True: 
    # capture the current frame 
    frame = cv.QueryFrame(capture) 
    if frame is None: 
    break 
    else: 
    #detect(frame) 
    cv.ShowImage('Video Stream', frame) 
    if k == 0x1b: # ESC 
    print 'ESC pressed. Exiting ...' 
    break 

实际上,这个东西的工作原理,但它需要太多的时间来显示图像。我猜这是因为ffmpeg的这个错误。

[mjpeg @ 0x8cd0940]max_analyze_duration reached 
    [mjpeg @ 0x8cd0940]Estimating duration from bitrate, this may be inaccurate 

我不是一个蟒蛇专家,所以任何帮助,将不胜感激!

回答

1

首先,mjpeg是一个相对简单的视频格式。如果您阅读了您的IP摄像机手册,就好像您可以找到如何使用JavaScript代码在浏览器中显示视频。事实上,如果您在Google Chrome中打开http://prot-on.dyndns.org:8080/video2.mjpeg的链接,您会看到视频没有任何问题。 (也许你不应该留下你的相机的真实URL)

其次,据我所见,你的相机的帧速率是非常缓慢的。这可能是由于互联网延迟或相机的设置。将您在Chrome中看到的内容与代码显示的视频进行比较,如果它们具有相同的质量,那么这不是您的代码问题。