我遇到了从我拥有的IP摄像机获取视频流的问题。我正在使用opencv从中获取图像。这是我的代码:
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
我不是蟒蛇专家,所以任何帮助都会受到赞赏!
答案 0 :(得分:1)
首先,mjpeg是一种相对简单的视频格式。如果您阅读了IP摄像机的手册,就可以了解如何使用一些JavaScript代码在浏览器中显示视频。事实上,如果您在Google Chrome中打开http://prot-on.dyndns.org:8080/video2.mjpeg的链接,您会看到该视频没有任何问题。 (也许你不应该留下相机的真实网址)
其次,据我所知,相机的帧速率非常慢。这可能是由于互联网延迟或您的相机设置。将您在Chrome中看到的内容与代码显示的视频进行比较,如果它们具有相同的质量,那么这不是您的代码问题。