【问题标题】:sending video stream from server to client using socket programming in python使用python中的套接字编程将视频流从服务器发送到客户端
【发布时间】:2014-09-11 08:23:54
【问题描述】:

我正在尝试使用 python 套接字将视频流从服务器发送到客户端,但遇到错误。 这是我的服务器端和客户端代码。从服务器发送帧到客户端存在一些问题,

这是我的服务器端代码

    #!/usr/bin/env python 



import socket 

import cv2

import json

host = ' ' 

port = 50058

backlog = 5 

size = 1024 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
**strong text**s.bind((host,port)) 
s.listen(backlog) 

vc=cv2.VideoCapture(0)    
if vc.isOpened():

    rval, frame = vc.read()

while 1: 

    client, address = s.accept()
    rval, frame = vc.read()

    #data = client.recv(size) 
    if rval:  
        #print "recieved data " + str(data)
        #print "sending data to %s" % str(address)

        #p=json.dumps(frame)
        client.send(frame) 
    client.close()

还有**客户端代码**

#!/usr/bin/env python """ A simple echo client """ import socket import cv2 import json host = '169.254.132.51' port = 50058 size = 1024000000 cv2.namedWindow("preview") s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host,port)) while True: data = s.recv() #frame=json.loads(data) cv2.imshow("preview", data) s.close()

【问题讨论】:

    标签: python sockets opencv python-sockets


    【解决方案1】:

    您只能在套接字上发送字符串或缓冲区。 Frame 是一个 numpy 数组。您必须先将其转换为字符串。使用以下代码将其转换为字符串。

    frame = frame.flatten()
    data = frame.tostring()
    

    通过网络发送数据

    在另一边使用

    frame = numpy.fromstring(data, dtype=numpy.uint8)
    frame = numpy.reshape(frame, (240,320,3))
    

    将其转换回可以传递给 cv2.imshow() 的帧

    我建议使用 UDP 而不是 TCP,因为您的延迟会更低。

    【讨论】:

      【解决方案2】:

      1) 服务器在 1 次发送后关闭连接,但客户端似乎期望超过一帧

      2) SOCK_STREAM (TCP) 只支持流,不分包。您需要自己构建分隔部分。

      3) recvall 甚至不是函数

      也许您应该尝试使用远程多处理来实现它: https://docs.python.org/2/library/multiprocessing.html#using-a-remote-manager

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        • 1970-01-01
        • 1970-01-01
        • 2020-06-01
        • 2013-04-01
        • 2013-09-29
        • 2021-12-03
        相关资源
        最近更新 更多