2015-02-18 14 views
10

PRE-SCRIPTUM:WebRTC - riduzione della CPU, impostazioni da perfezionare

Ho cercato su StackOverflow e non c'è Q/A spiegare tutte le possibilità di tweaking WebRTC per renderlo più praticabile per i prodotti finali.

PROBLEMA:

WebRTC ha un bel UX e sta tagliando il bordo. Dovrebbe essere perfetto per le chiamate in mesh (3-8 persone), ma non lo è ancora. Il più grande problema con le chiamate mesh (tutti i partecipanti si scambiano i flussi l'uno con l'altro) è il consumo di risorse, in particolare la CPU.

Qui ci sono alcune statistiche che vorrei condividere:

2.3 GHz Intel Core i5 (2 core), OSX 10.10.2 (14C109), 4GB di RAM, Chrome 40.0.2214.111 (64-bit)

+------------------------------------+----------+----------+ 
| Condition       | CPU  | Delta | 
+------------------------------------+----------+----------+ 
| Chrome (idle after getUserMedia) | 11%  | 11%  | 
| Chrome-Chrome      | 55%  | 44%  | 
| Chrome-Chrome-Chrome    | 74%  | 19%  | 
| Chrome-Chrome-Chrome-Chrome  | 102%  | 28%  | 
+------------------------------------+----------+----------+ 

DOMANDA:

vorrei creare una tabella con modifiche WebRTC, che può migliorare il consumo di risorse e di rendere l'esperienza complessiva migliore. Ci sono altre impostazioni con cui posso giocare oltre a quelle che sono nella tabella qui sotto?

+------------------------------------+--------------+----------------------+ 
| 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.

Mi piacerebbe lasciare la stessa architettura (mesh), quindi MCU non è la cosa che sto cercando.

+1

Immagino che un cambiamento da Opus a un PCMA/U a un tasso inferiore avrebbe fornito una differenza. Tuttavia, la qualità si abbasserebbe. –

+1

Inoltre, il passaggio a H264 in Firefox (supportato solo lì) potrebbe essere d'aiuto poiché H264 è solitamente supportato dall'hardware e quindi facilita i cicli utilizzati nella CPU. –

risposta

4

È possibile modificare la frequenza audio e il codec (OPUS -> PCMA/U) e ridurre i canali. Cambiare audio ti aiuterà ma il video è il tuo maiale principale della CPU.

Firefox supporta H.264. Usarlo potrebbe portare a riduzioni significative dell'utilizzo della CPU, dato che un sacco di diverse architetture supportano la codifica/decodifica hardware di H.264. Non sono sicuro al 100% se Firefox ne approfitterà ma ne vale la pena.

Per quanto riguarda il chrome, VP8 è davvero l'unica opzione per video al momento e le modifiche agnostiche del codec (risoluzione, bitrate, ecc.) Sono davvero l'unico modo per affrontare i cicli utilizzati lì.

Potrebbe anche essere possibile forzare Chrome a utilizzare uno stream di qualità inferiore negoziando the maximum bandwith in your SDP. Anche se, in passato, questo non ha funzionato con Firefox.