我的 C# 代码中有 30FPS 的视频帧,我想在本地主机中广播它,以便所有其他应用程序都可以使用它。我虽然因为它是一个视频并且没有任何数据包丢失并且不需要连接/接受来自客户端的问题,所以 UDP 是一个不错的选择。
但是这里有很多问题。
- 如果我使用 UDP 单播速度就足够了,大约 25FPS(CPU 使用率为 25%,这意味着在我的 4 核 CPU 中的一个线程上 100%,这并不理想。但至少它发送了足够多的数据集)。但是单播无法将数据传送给所有客户端。
- 如果我用广播速度是很低的。大约 10FPS 与相同的 CPU 使用率。
我能做些什么?!数据在同一台计算机中,因此无需从 LAN 等进行远程访问。我只想要一种在同一台机器的不同应用程序之间每秒传输约 30MBytes 数据的方法。(640x480 是固定大小的 Image x 30fps x 3byte per pixel is about 27000KByte per second)
- UDP组播性能更好吗?!
- 即使我接受每个客户端并独立发送给他们,TCP 是否可以给我更好的性能?!
- 有没有比 Socket 更好的方法?!内存共享什么的?!
- 为什么UDP广播那么慢?!每秒只有大约 10 兆字节?!
- 有没有一种快速压缩高性能帧的方法(每秒编码 30fps 并在其他部分解码)?客户端应用程序使用 C++,因此这必须是一种跨平台方式。
我只是想在这里了解其他开发人员的经验和想法,所以请写下您的想法。
编辑:
有关数据的更多信息:数据采用位图 RGB24 格式,它们以 30FPS 的速度从设备流式传输到我的应用程序。我想将此数据广播到其他应用程序,他们需要再次将这些图像设为 RGB24 格式。没有标题或任何东西,只有固定大小的位图数据。所有操作都必须即时执行。无论使用有损压缩算法还是任何东西。