WebRTC - уменьшение процессора, настройки для настройки

PRE-SCRIPTUM:

Я искал StackOverflow, и нет Q/A, объясняющего все возможности настройки WebRTC, чтобы сделать его более жизнеспособным для конечных продуктов.

Проблема:

WebRTC имеет очень хороший UX, и он режет край. Он должен быть идеальным для вызовов сетки (3-8 человек), но это еще не все. Самая большая проблема с сетными вызовами (все участники обмениваются потоками друг с другом) - это потребление ресурсов, особенно CPU.

Вот некоторые статистики, которые я хотел бы поделиться:

2.3 ГГц Intel Core i5 (2 ядра), OSX 10.10.2 (14C109), 4 ГБ ОЗУ, 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.

Я хотел бы оставить ту же архитектуру (mesh), поэтому MCU - это не то, что я ищу.

Ответ 1

Вы можете изменить скорость звука и кодек (OPUS → PCMA/U), а также уменьшить каналы. Изменение звука поможет, но видео - ваш главный босс процессора.

Firefox поддерживает H.264. Использование его может привести к значительному сокращению загрузки процессора, поскольку тонна различных архитектур поддерживает аппаратное кодирование/декодирование H.264. Я не уверен на 100%, если Firefox воспользуется этим, но это того стоит.

Что касается chrome, VP8 - это действительно ваш единственный вариант для видео на данный момент, и ваши агностические изменения кодека (разрешение, битрейт и т.д.) на самом деле являются единственным способом обращения к используемым там циклам.

Вы также можете заставить Chrome использовать более качественный поток, согласовав максимальную пропускную способность в SDP. Хотя в прошлом это не работало с Firefox.