【问题标题】:Limiting data transferred through a socket in c++在 C++ 中限制通过套接字传输的数据
【发布时间】:2012-05-13 02:46:51
【问题描述】:

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

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

如果您能分享您的想法并引导我走向正确的方向,我将不胜感激。提前致谢。

编辑:

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

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

【问题讨论】:

  • 听起来你想要实现的更多是降低帧速率。那么分辨率就不那么重要了,更高的分辨率,更低的帧率。
  • 有没有办法降低网络摄像头的帧率?我可以使用哪些开源库与网络摄像头进行交互?

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


【解决方案1】:

如果数据未压缩:640 px/line × 480 lines/frame × 30 frames/sec × 24 bit/px ≈ 211 Mbps

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

【讨论】:

  • @umair:什么是 YUV2?是12bpp吗?那么你有一半的利率。
  • YUV2 为 16bpp,这意味着未压缩数据约为 150 Mbps
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2020-07-15
  • 2014-03-16
  • 2012-12-13
相关资源
最近更新 更多