javascript - home - webrtc logo
¿Hay una API para chrome:// webrtc-internals/variables en javascript? (2)
Lo encontré, tuve que rastrear algunos hilos de la comunidad de google ( thread 1 , thread2 ):
var peerjs = new Peer(...); // initialize peerJS
var connections = peerjs.connections;
Conexiones es un objeto:
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
Eche un vistazo a cualquiera de esos objetos de conexión:
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 :-)
})
Deseo obtener acceso a algunas de las variables registradas en chrome://webrtc-internals/
, pero no encontré nada en google, ni siquiera una descripción de los gráficos que puedo ver.
Estoy particularmente interesado en packetsLost
, googCurrentDelayMs
y googNacksSent
.
por qué quiero acceder al webrtc-internals
Estoy escribiendo una aplicación google chrome que comparte una transmisión de video (p2p). Utiliza peerjs para compartir la transmisión con otros pares, que a su vez utiliza la implementación de googlertc de google debajo. Para que mi aplicación sea perfecta necesitaría saber cuándo ocurre un gran retraso. Como puedo ver la demora registrada en chrome://webrtc-internals/
Me preguntaba si podría acceder a ella a través de javascript.
Supongo que no hay API para chrome://webrtc-internals/
-menu.
Después de investigar mucho, así es como logré obtener la PC usando twilio 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);
}
}
});
// Calcular 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);
}
}
});