首页 > 解决方案 > Unity3D 中的高清视频通话

问题描述

我是视频/图像处理的业余爱好者,但我正在尝试创建一个用于高清视频通话的应用程序。我希望有人能看到我可能做错的地方并引导我走上正确的道路。这是我正在做的事情以及我认为我理解的事情,如果您知道得更好,请纠正我。

  1. 我目前正在使用 OpenCV 从我的网络摄像头中获取 DLL 中的图像。(我稍后会将此图像用于其他事情)
  2. 目前,opencv 给我的图像是 Opencv::Mat。我调整了它的大小并转换为 720p 图像的字节数组大小,大约为 3 兆像素。
  3. 我将此 ptr 传递回我的 C# 代码,然后我现在可以将它渲染到纹理上。
  4. 现在我创建了一个 TCP 套接字并连接服务器和客户端并开始传输之前获得的图像字节数组。我能够将字节数组传输到客户端,然后使用 GPU 将其渲染为纹理。
  5. 目前,有大约 4-500ms 延迟的大延迟。这是在我尝试使用 gzipstream 压缩缓冲区以实现统一之后。它能够将字节数组从大约 300 万字节压缩到 150 万字节。我正在尝试将其尽可能小,也尽可能快,但这是我完全迷失的地方。我看到 Skype 只需要 1.2Mbps 的连接就可以进行 22 fps 的 720p 视频通话。我不知道他们怎么能做到这么小的框架,但我当然不需要它那么小。我至少得体面。

请给我讲讲如何做到这一点!让我知道您是否需要我提供其他任何东西。

标签: c++.netopencvunity3dtcp

解决方案


我发现一个链接可能对从事类似工作的任何人都非常有用。https://www.cs.utexas.edu/~teammco/misc/udp_video/ https://github.com/chenxiaoqino/udp-image-streaming/


推荐阅读