【发布时间】:2021-02-24 13:15:19
【问题描述】:
您好,我正在使用网络编程,很难创建一个逻辑,允许将视频从单个服务器流式传输到多个客户端无延迟。
这意味着我必须在流到所有连接的客户端期间实现并行执行,以便同时显示图像。
为什么这对我的项目很重要,因为我打算拥有大量客户(从 200 个到大约 700 个),现在有 10 个客户,延迟不过是 700 个客户可能会大大增加延迟到几个分钟(不确定但可能)。
对于那些不知道延迟原因是什么的人,它来自我正在使用的 for 循环,其中包含每个帧的发送函数,这是一个串行执行。
我尝试了 threading 和 multiprocessing 甚至 function schedule 但每件事都变得一团糟,之前我使用的是 socket & opencv,但由于某种原因,它在流式传输过程中引起了问题,现在我切换到 Netgear 和 Vidgear 但我仍在苦苦挣扎。
希望有人能提供帮助。
PS: 多播不适合这项工作,在我尝试之后,由于传输图像的长度,我收到错误,UDP 协议将不接受超过 65535 字节。
【问题讨论】:
-
客户端是否在同一个网络上?客户端组是否在同一个网络上?
-
服务器和客户端在同一个网络
-
因为一切都在同一个网络中,所以你应该使用多播,这是为这种场景设计的。您可以将单个多播数据包发送到订阅该多播组的多个接收者。忘记尝试向每个客户端发送相同数据的副本,只需发送一次,所有客户端都会收到它。
-
非常感谢您提供的信息,我会根据您的建议开始做一些测试,希望一切都按预期进行。
标签: python-3.x sockets opencv networking network-programming