是否有一个API为chrome://web内部/变量在javascript
Is there an API for the chrome://webrtc-internals/ variables in javascript?
我想访问chrome://webrtc-internals/
中的一些日志变量,但是我在google上没有找到任何东西-甚至没有我可以看到的图形的描述。
我对packetsLost
、googCurrentDelayMs
和googNacksSent
特别感兴趣。
为什么我要访问webtc -internals
我正在写一个谷歌chrome应用程序,共享视频流(p2p)。它使用peerjs与其他对等体共享流,这反过来又在底层使用google的webrtc实现。为了使我的应用程序完美,我需要知道什么时候会出现大延迟。由于我可以看到chrome://webrtc-internals/
中记录的延迟,我想知道我是否可以通过javascript访问它。
我的猜测是没有API的chrome://webrtc-internals/
菜单。
我找到了它-不得不通过几个谷歌社区线程(线程1,线程2):
var peerjs = new Peer(...); // initialize peerJS
var connections = peerjs.connections;
Connections是一个对象:
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
看一下这些连接对象:
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 :-)
})
经过大量研究,这就是我如何使用twilio SDK获得pc的方法。
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);
}
}
});
//计算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);
}
}
});
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 在Web应用程序中使用Highcharts javascript
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- Selenium Web驱动程序和javascript
- 调用函数内部的函数
- Windows形成web浏览器控件和Javascript更改的DOM
- Web Workers内部的CSS选择
- Cheerio Web Scrape 如何在 Web Scrape 内部进行 WebScrape
- 如何在 Web 组件中设置标签的内部文本
- 无论如何可以在内部网Web应用程序中从Javascript进行端口发现
- Getting 500:从javascript发送http请求时,来自Web服务器的响应出现内部服务器错误
- web worker内部的DOM操作
- Web API 给出错误:500 内部服务器错误
- 500内部服务器错误,当我击中web服务器
- 如何为消息属性提供公共服务,仍然可以从web项目内部访问它们
- 内部的Web工作者承诺导致崩溃
- 可能是Web worker内部的Web worker
- 是否有一个API为chrome://web内部/变量在javascript
- 如何在windows网络的内部网web应用程序中获取用户的用户名