我是视频/图像处理的业余爱好者,但我正在尝试创建用于高清视频通话的应用程序。我希望有人能看到我可能做错了什么,并引导我走上正确的道路。这是我正在做的事情以及我认为我了解的事情,如果您知道的更多,请纠正我。
- 我当前正在使用OpenCV来从DLL中的网络摄像头获取图像。 (我稍后将将此图片用于其他用途)
- 当前,opencv给我的图像是Opencv :: Mat。我调整了大小,并将其转换为720p图像的字节数组大小,大约3兆像素。
- 我将此ptr传递回我的C#代码,然后现在可以将其渲染到纹理上。
- 现在,我创建了一个TCP套接字,并连接了服务器和客户端,并开始传输以前获得的图像字节数组。我能够将字节数组传输到客户端,然后使用GPU将其渲染为纹理。
- 当前,存在大约4-500ms的较大延迟。这是在我尝试使用gzipstream压缩缓冲区以实现统一之后。它能够将字节数组从大约300万个字节压缩到150万个。我试图将其最小化,并尽可能快地将其缩小,但这是我完全迷失的地方。我看到Skype仅需要1.2Mbps的连接就可以以22 fps的速度播放720p视频。我不知道他们如何实现这么小的框架,但是我当然不需要这么小。我至少要得体。
请给我讲讲如何完成此工作!并且让我知道您是否还需要我提供其他任何东西。