预脚本:
我在StackOverflow上搜索过,没有任何问答解释调整WebRTC以使其更适合最终产品的所有可能性。
问题:
WebRTC有一个非常好的用户体验,它是最前沿的。它应该非常适合网格通话(3-8人),但现在还不是。网格调用(所有参与者相互交换流)的最大问题是资源消耗,尤其是CPU。
以下是我想分享的一些统计数据:
2.3 GHz Intel Core i5(2核),OSX 10.10.2(14C109),4GB RAM,Chrome 40.0.2214.111(64位)
+------------------------------------+----------+----------+
| Condition | CPU | Delta |
+------------------------------------+----------+----------+
| Chrome (idle after getUserMedia) | 11% | 11% |
| Chrome-Chrome | 55% | 44% |
| Chrome-Chrome-Chrome | 74% | 19% |
| Chrome-Chrome-Chrome-Chrome | 102% | 28% |
+------------------------------------+----------+----------+
问题:
我想创建一个带有WebRTC调整的表,这可以提高资源消耗,使整体体验更好。除了下表中的设置之外,我还有其他设置可以玩吗?
+------------------------------------+--------------+----------------------+
| Tweak | CPU Effect | Affects |
+------------------------------------+--------------+----------------------+
| Lower FPS | Low to high | Video quality lower |
| Lower video bitrate | Low to high | Video quality lower |
| Turn off echo cancellation | Low | Audio quality lower |
| Lower source video resolution | Low to high | Video quality lower |
| Get audio only source | Very high | No video |
| Codecs? Compression? More?.. | | |
+------------------------------------+--------------+----------------------+
p.S.
我想离开相同的架构(网格),所以MCU不是我要搜索的东西。
您可以更改音频速率和编解码器(OPUS->PCMA/U),也可以减少通道。改变音频会有所帮助,但视频是占用CPU的主要部分。
Firefox确实支持H.264。使用它可以显著降低CPU利用率,因为大量不同的体系结构支持H.264的硬件编码/解码。我不能100%确定Firefox是否会利用这一点,但值得一试。
至于chrome,VP8实际上是您目前唯一的视频选项,而与编解码器无关的更改(分辨率、比特率等)实际上是解决其中使用的周期的唯一方法。
您还可以通过协商SDP中的最大带宽来强制Chrome使用较低质量的流。不过,在过去,这在Firefox中并不起作用。