限制通过c ++中的套接字传输的数据

时间:2012-05-12 18:18:10

标签: c++ sockets compression video-streaming bandwidth

我正在开发USB重定向软件,它通过在客户端计算机上添加虚拟USB设备来重定向网络上的USB设备。一切都工作正常,但客户抱怨说,当他连接640X480分辨率的网络摄像头时,100 Mbps网络窒息。我已经在1 Gbps适配器上测试了网络摄像头,它使用了大约16%(160 Mbps)的带宽。网络摄像头应该占用这么多带宽吗?无论如何,他希望网络使用率低于50 Mbps。

我尝试压缩从DeviceIoControl获取的数据,然后在将其传递给DeviceIoControl之前在客户端解压缩。适用于文件传输,但视频停止工作,带宽降至约50 Mbps。我尝试在发送数据之前添加短延迟,但这也会导致黑屏。现在我想以某种方式强行将相机分辨率降低到320X240。我不确定是否有任何其他方法可以减少DeviceIoControl抛出的数据。

如果您能分享您的想法并引导我朝着正确的方向前进,我将非常感激。提前谢谢。

编辑:

它是YUV2格式的网络摄像头。

我可以使用任何开源库来降低Windows平台上网络摄像头的帧速率或分辨率吗?

1 个答案:

答案 0 :(得分:1)

如果数据未压缩:640 px / line×480行/帧×30帧/秒×24 bit /px≈211Mbps

您可以查看网络摄像头的文档是否支持某种压缩或帧率控制。