gpt4 book ai didi

python - 使用python中的套接字编程将视频流从服务器发送到客户端

转载 作者:行者123 更新时间:2023-12-02 16:47:20 25 4
gpt4 key购买 nike

我正在尝试使用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()

最佳答案

您只能在套接字上发送字符串或缓冲区。框架是一个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,因为这样会降低延迟。

关于python - 使用python中的套接字编程将视频流从服务器发送到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25782600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com