【问题标题】:WebRTC performance - very high cpu loadWebRTC 性能 - 非常高的 CPU 负载
【发布时间】:2012-10-24 02:59:16
【问题描述】:

使用WebRTC + 画布构建的运动检测器js library。 当我运行该应用程序时,我立即获得非常高的 CPU 使用率。 我优化了循环等,但基本问题似乎是访问相机,例如 WebRTC。

有没有办法让 WebRTC 表现得更好?也许是另一种配置?还是我缺少什么?这可能是我处理错误的一些 js 内存泄漏吗? 我做错了什么?

您可以使用相同的库查看另一个演示 here

另外一个使用 WebRTC 并且有同样的问题 here

【问题讨论】:

  • 我在iambrandonn.github.com/WebcamSwiper 测试了演示,它使用的 CPU 时间不超过 20%。我认为您应该记住,WebRTC 还远未准备好生产——API 和底层协议仍在经历重大变化。您是在每个浏览器中获得高 CPU 负载还是仅在特定浏览器上获得高 CPU 负载?
  • 你也测试过另一个吗?我也只能在 chrome 22 中进行测试,因为这已经在其他浏览器中实现了..
  • getUserMedia 现在可以在 Firefox Aurora/Nightly 和 Opera 中使用——最好在这些上进行测试。 (有关适用于所有三个平台的演示,请参见 www.simpl.info/gum。)爱立信 Bowser 移动浏览器还实现了 WebRTC,包括 gUM。另外,为了迂腐,请注意“WebRTC”习惯于表示 gUM,而 WebRTC 实际上是整个浏览器中的实时通信项目,包括 RTCPeerConnection 和 DataChannel。没有这三个 API,就有了 Web,但没有 RTC! gUM 只是获取流数据的部分。

标签: javascript performance html html5-canvas webrtc


【解决方案1】:

该演示看起来像是通过检查视频图像的像素来进行运动检测。它似乎将其呈现到画布上,然后检索画布图像数据。

这很慢,因为它只是一件很慢的事情 - 有很多像素,帧很快通过,而且这是一项高 CPU 工作。更糟糕的是,Javascript 在这种数据量大的处理中并不总是非常有效。所以我不认为缓慢是WebRTC固有的。这只是繁重的 javascript。

【讨论】:

    【解决方案2】:

    您是否尝试过使用Web Workers 进行计算?

    有一个demo using web workers for motion tracking(仅限 Firefox)。在这个演示中 CPU 使用率确实很高,但工作人员报告的 fps 远远超过了视频的帧速率,因此尝试将工作人员限制为 30 fps 可能会有一些好处。

    【讨论】:

    • 为什么使用 webworkers 会更快?非阻塞也许但更快?网络工作者是否使用不同的线程?
    • 是的,它们在与 UI 线程不同的线程中运行。更进一步,您可以启动多个工作人员并以 MapReduce 方式分配工作以提高性能。不过对于 CPU 使用率,YMMV。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2014-10-21
    相关资源
    最近更新 更多