Проблема с Python и IP-камерой

#python #opencv

#python #opencv

Вопрос:

У меня возникли проблемы с получением видеопотока с имеющейся у меня 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
  

Я не эксперт по python, поэтому буду признателен за любую помощь!

Ответ №1:

Во-первых, mjpeg — это относительно простой видеоформат. Если вы прочитаете руководство по эксплуатации вашей IP-камеры, оно очень похоже на то, что вы можете найти, как отобразить видео в браузере с помощью небольшого кода JavaScript. На самом деле, если вы откроете ссылку на http://prot-on.dyndns.org:8080/video2.mjpeg в Google Chrome вы бы увидели видео без каких-либо проблем. (Возможно, вам не следует оставлять реальный URL вашей камеры)

Во-вторых, насколько я могу видеть, частота кадров вашей камеры довольно низкая. Это может быть связано с задержкой в Интернете или настройками вашей камеры. Сравните то, что вы видите в Chrome, с видео, отображаемым вашим кодом, если они имеют одинаковое качество, то это не проблема вашего кода.