通过UDP通信发送图像

时间:2016-09-17 13:29:52

标签: python image sockets stream udp

我正在尝试创建一个视频流应用程序,在这个应用程序中,我将能够同时传输我的网络摄像头和桌面。到目前为止,我已经通过TCP通信完成了这项工作,以确保一切正常,但确实如此,但速度非常慢。 我知道通常在像这样的直播流中你会使用UDP,但我无法让它工作。我已经创建了一个基本的UDP客户端和服务器,它可以发送短信字符串,但是当发送整个图像时,我无法找到解决方案。我也在网上查了一下,但发现只有关于通过套接字发送图像的帖子,他们使用TCP。 我正在使用Python 2.7,pygame来显示图像,PIL + VideoCapture来保存它们,还有StringIO + base64以便将它们作为字符串发送。

1 个答案:

答案 0 :(得分:0)

我的通灵能力告诉我,正在达到UDP数据包的大小限制,这个数据包的容量不到64KB。您可能需要在发送时将图像字节分成多个数据包,并有一些逻辑将它们重新组合在接收端。您可能需要推出自己的标题格式。

不确定为什么你需要对你的图像字节进行base64编码,这只会无缘无故地增加33%的网络开销。

虽然UDP的网络开销比TCP少,但它通常依赖于您(开发人员)提供自己的流控制,碎片处理,丢包等机制......