Existe-t-il une API pour le chrome: // webrtc-internal / variables dans javascript?

Je veux avoir accès à certaines des variables enregistrées dans le chrome://webrtc-internals/ , mais je n'ai rien trouvé sur Google, pas même une description des graphiques que je peux voir.
Je suis particulièrement intéressé par les packetsLost , googCurrentDelayMs et googNacksSent .

Pourquoi je veux accéder aux webrtc-internes
J'écris une application google chrome qui partage un flux vidéo (p2p). Il utilise peerjs pour partager le flux avec d'autres pairs, ce qui, à son tour, utilise la mise en œuvre webrtc de googles en dessous. Pour rendre ma demande parfaite, je devrais savoir quand un grand retard se produit. Puisque je peux voir le délai enregistré chrome://webrtc-internals/ Je me demandais si je pouvais y accéder via JavaScript.

À mon avis, il n'y a pas d'API pour le chrome://webrtc-internals/ -menu.

Je l'ai trouvé – a dû ramper à travers quelques threads de communauté de google ( thread 1 , thread2 ):

 var peerjs = new Peer(...); // initialize peerJS var connections = peerjs.connections; 

Les connexions sont un objet:

 Object {2e1c5694-e6ef-e1b2-22d5-84a3807961d4: Array[3]} 2e1c5694-e6ef-e1b2-22d5-84a3807961d4: Array[3] 0: DataConnection 1: MediaConnection 2: MediaConnection length: 3 __proto__: Array[0] __proto__: Object 

Jetez un oeil à l'un de ces objets de connexion:

 var rtcPeerConn = connectionObject.pc; // RTCPeerConnection rtcPeerConn.getStats(function callback(connStats){ var rtcStatsReports = connStats.result() // array of available status-reports // each status-report object has many status variables, such as // googCurrentDelayMs. You need to iterate over all object and check // their names to find the one status report you want rtcStatsReports[7].names() // returns all available variables for that report var googCurrentDelayMs = rtcStatsReports[7].stat('googCurrentDelayMs') console.log(googCurrentDelayMs) // finally - googCurrentDelayMs :-) }) 

Après avoir recherché beaucoup, c'est ainsi que j'ai réussi à obtenir le PC en utilisant twiled SDK.

 var rtcPeerConn =Twilio.Device.activeConnection(); rtcPeerConn.options.mediaStreamFactory.protocol.pc.getStats(function callback(report) { var rtcStatsReports = report.result(); for (var i=0; i<rtcStatsReports.length; i++) { var statNames = rtcStatsReports[i].names(); // filter the ICE stats if (statNames.indexOf("transportId") > -1) { var logs = ""; for (var j=0; j<statNames.length; j++) { var statName = statNames[j]; var statValue = rtcStatsReports[i].stat(statName); logs = logs + statName + ": " + statValue + ", "; } console.log(logs); } } }); 

// Calculer errorRate Packetlost / packetsent

 var rtcPeerConn =Twilio.Device.activeConnection(); rtcPeerConn.options.mediaStreamFactory.protocol.pc.getStats(function callback(report) { var error, pcksent; var rtcStatsReports = report.result(); for (var i=0; i<rtcStatsReports.length; i++) { var statNames = rtcStatsReports[i].names(); // filter the ICE stats if (statNames.indexOf("packetsSent") > -1) { var logs = ""; for (var j=0; j<statNames.length; j++) { var statName = statNames[j]; var statValue = rtcStatsReports[i].stat(statName); if(statName=="packetsLost") error= statValue; if(statName =="packetsSent") pcksent = statValue; logs = logs +"n:" +statName + ": " + statValue + ", "; } console.log(error/pcksent); } } });