Задержка потокового видео UDP - питон OPENCV - PullRequest
0 голосов
/ 21 января 2019

У меня есть потоковое видео UDP, но пакеты задерживаются и неупорядочены.Вот мой код для справки, который я взял с веб-сайта opencv.

Но когда я даю Socket.Stream для использования TCP-соединения, он работает нормально и кадры непрерывны.

Server.py

import socket
import numpy
import time
import cv2

UDP_IP = "127.0.0.1"
UDP_PORT = 999
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))


s=b''

while True:

  data, addr = sock.recvfrom(46080)

  s += data

  if len(s) == (46080*20):

    frame = numpy.fromstring (s,dtype=numpy.uint8)
    frame = frame.reshape (480,640,3)

    cv2.imshow('frame',frame)

    s=b''

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

Client.py

import socket
import numpy as np
import cv2

UDP_IP = '127.0.0.1'
UDP_PORT = 999
cap = cv2.VideoCapture(0)
#cap.set(cv2.CAP_PROP_FRAME_WIDTH,320)
#cap.set(cv2.CAP_PROP_FRAME_HEIGHT,240)
def xrange(x):

  return iter(range(x))
while (True):
  ret, frame = cap.read()
  cv2.imshow('frame', frame)
  sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  d = frame.flatten()
  s = d.tostring()
  for i in xrange(20):
    sock.sendto(s[i * 46080:(i + 1) * 46080], (UDP_IP, UDP_PORT))
  if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cap.release()
cv2.destroyAllWindows()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...