Python 不稳定图像传输

Python 不稳定图像传输,python,image,sockets,tcp,Python,Image,Sockets,Tcp,我现在正试图将相机拍摄的图像从我所在的地方发送到另一个偏远城市的另一台服务器。 远程城市的服务器会将接收到的图像发送回来,我会在本地显示这些图像。 我正在使用python tcp套接字。我显示两张相机拍摄的图像。一个通过局域网,一个通过远程服务器。本地的那个很好用。问题是,从远程位置获取的图像有时显示得非常慢,然后突然变快,与本地图像的速度相同。 我测量了性能,我可以每秒捕获30幅图像,并且它能够在本地以每秒30幅图像的速度发送,但是当通过远程部分时,有时它发送20幅图像,有时发送40幅图像。。

我现在正试图将相机拍摄的图像从我所在的地方发送到另一个偏远城市的另一台服务器。 远程城市的服务器会将接收到的图像发送回来,我会在本地显示这些图像。 我正在使用python tcp套接字。我显示两张相机拍摄的图像。一个通过局域网,一个通过远程服务器。本地的那个很好用。问题是,从远程位置获取的图像有时显示得非常慢,然后突然变快,与本地图像的速度相同。 我测量了性能,我可以每秒捕获30幅图像,并且它能够在本地以每秒30幅图像的速度发送,但是当通过远程部分时,有时它发送20幅图像,有时发送40幅图像。。。。有时30。
有人知道原因吗?

既然您正在传输实时视频,我想您可以承受一两帧的损失。如果是,那么我建议您尝试使用UDP协议传输视频帧。TCP确实保证了数据传输,但有时会以更长的数据传输时间为代价


以下是一些可用于从摄像机传输实时图像的协议

请包括代码。否则我们不知道如何帮助。发送方:size=len(image)sock.send(struct.pack('I',socket.htonl(size)))sock.sendall(image)接收方:data=conn.recv(4,socket.MSG_WAITALL)str=struct.unpack(“I”,data)size=socket.ntohl(str[0])data=conn.recv(size,socket.MSG_WAITALL)我每秒捕获30张图像,发送者有时发送30张,但有时只发送10到20张,然后发送40到50张图像。我猜网络的带宽是可变的,我看不出有什么问题。一个解决方案是将每秒的图像缩放到20或10个。是的,这是一个很好的方法。但是,对我来说,一个问题是我在一个局域网,如果我使用UDP,传入的消息将进入我们局域网的主机。我需要建立一个服务器来接收图像并将其传输到本地机器。这就是我使用TCP的原因,因为TCP在每台机器之间创建了一个单独的通道,所以我不需要构建服务器。但是tcp现在不能很好地工作,这是尝试使用UDP的一个好方法。