我正在使用Unity3D(C#)开发Android应用程序,该应用程序从相机捕获帧(~30fps)并将它们发送到网络上的计算机。然后,计算机接收的帧将使用基于OpenCV的程序(C ++)进行处理。我设法使用UDP套接字实现了这一点(也试过TCP,但有时帧会丢失)。后来,我发现一些网络出于安全原因(例如我公司内部)停止UDP数据包,所以我想通过创建一个不同的接口来概括通信,例如,通过HTTP POST。这有意义吗?我对HTTP请求没有多少经验,我在徘徊这种方法是否与TCP套接字案例类似,但是没有成功。
是否有其他通信方式可以保证UDP等性能,但是通过更高级别的通信?
答案 0 :(得分:0)
有两种类型的套接字协议...... TCP和UDP。 HTTP是一种应用程序协议,对通过TCP套接字接收的数据运行。所以你不能用HTTP替换TCP或UDP。您将使用带有TCP或UDP套接字的HTTP。
现在你的帖子有些令人不安...... TCP套接字到目前为止更可靠。使用TCP时帧丢失是没有意义的,因为TCP基本上保证您将获得所有数据。
另一方面,使用UDP,您经常会发现许多数据包被丢弃。实际上,视频流并不是一件坏事。对于视频流,您希望尽可能减少延迟。 TCP必须进行大量的错误检查,以确保您的数据包不会被丢弃,因此TCP比UDP慢得多。因此,对于视频流,您通常会使用UDP。
无论如何,有更多高效的流式视频库,而不仅仅是尝试使用UDP和jpeg帧实现自己的流式视频。我建议你搜索一个符合你的平台和语言需求的。