Rodrigo Melo
Rodrigo Melo

Reputation: 21

Problem with Python and IP camera

I'm having problems to get a video stream from a IP camera I have. I'm using opencv to get the images from it. Here's the code i have:

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

Actually, this thing works, but it takes too much time to display the images. I'm guessing it's because of this error from ffmpeg.

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

I'm not a python expert so any help would be appreciated!

Upvotes: 2

Views: 7276

Answers (1)

LeafGlowPath
LeafGlowPath

Reputation: 3799

First, mjpeg is a relatively simple video format. If you read your IP camera's manual, it's very like that you can find how to display the video in browser with a bit JavaScript code. In fact, if you open link of http://prot-on.dyndns.org:8080/video2.mjpeg in Google Chrome, you would see the video without any problem. (Maybe you shouldn't leave the real URL of your camera)

Second, as far as I can see, the frame rate of your camera is pretty slow. That might due to Internet latency or your camera's setting. Compare what you see in Chrome with the video displayed by your code, if they are of same quality, then it's not your code's problem.

Upvotes: 1

Related Questions