检测互联网速度/带宽
Javascript - Detect Internet Speed/Bandwidth
使用下面的脚本检测连接到网络的系统的网速。参考javascript来检测网速
但是,在https://fast.com/和http://www.speedtest.net/上的速度结果是不同的。
var imageAddr = "http://www.kenrockwell.com/contax/images/g2/examples/31120037-5mb.jpg";
var downloadSize = 4995374; //bytes
function ShowProgressMessage(msg) {
if (console) {
if (typeof msg == "string") {
console.log(msg);
} else {
for (var i = 0; i < msg.length; i++) {
console.log(msg[i]);
}
}
}
var oProgress = document.getElementById("progress");
if (oProgress) {
var actualHTML = (typeof msg == "string") ? msg : msg.join("<br />");
oProgress.innerHTML = actualHTML;
}
}
function InitiateSpeedDetection() {
ShowProgressMessage("Loading the image, please wait...");
window.setTimeout(MeasureConnectionSpeed, 1);
};
if (window.addEventListener) {
window.addEventListener('load', InitiateSpeedDetection, false);
} else if (window.attachEvent) {
window.attachEvent('onload', InitiateSpeedDetection);
}
function MeasureConnectionSpeed() {
var startTime, endTime;
var download = new Image();
download.onload = function () {
endTime = (new Date()).getTime();
showResults();
}
download.onerror = function (err, msg) {
ShowProgressMessage("Invalid image, or error downloading");
}
startTime = (new Date()).getTime();
var cacheBuster = "?nnn=" + startTime;
download.src = imageAddr + cacheBuster;
function showResults() {
var duration = (endTime - startTime) / 1000;
var bitsLoaded = downloadSize * 8;
var speedBps = (bitsLoaded / duration).toFixed(2);
var speedKbps = (speedBps / 1024).toFixed(2);
var speedMbps = (speedKbps / 1024).toFixed(2);
ShowProgressMessage([
"Your connection speed is:",
speedBps + " bps",
speedKbps + " kbps",
speedMbps + " Mbps"
]);
}
}
这里的要点是根据用户的互联网连接速度改变视频质量运行时间。我需要获取网络速度,将其传递到服务器,并基于该视频质量将被改变。
如何达到同样的效果?
您的网络速度将根据可用带宽而变化。因此,您需要以特定的间隔运行速度测试,例如每10或15秒运行一次。但是,即使您能够在不影响性能和浏览器压力的情况下运行这些测试。你的下一个目标将是改变视频的质量到一个较低的质量,这将再次头痛,因为它不会是一个简单的视频src切换。
自适应比特率流是您正在寻找的。有一些媒体服务器提供这种功能。如果您正在寻找更开源的东西来理解和玩,那么您可以尝试Google Shaka Player。https://github.com/google/shaka-player。
还有一点需要注意的是,如果没有任何插件帮助,自适应比特率流将无法在IE中工作。
相关文章:
- Wacom stu-430签名捕获速度太慢
- 如何在速度模板中获取LiferayPortlet实例id
- 我想放慢html中进程栏的速度
- Knockout绑定大量数据的速度较慢
- Wordpress:未捕获引用错误:未定义速度
- 即使光标位于屏幕边缘,也可以跟踪鼠标速度
- Css优化谷歌页面速度洞察
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 录制速度javascript
- Javascript图像数组预加载速度和从内存中删除
- 谷歌地图多边形减慢浏览器速度
- nodejs/ccurlhttp请求与postlerrest客户端相比速度较慢
- 从Three.js场景中删除许多对象的速度较慢
- 构建多个图表时,HighCharts加载数据的速度较慢
- jQuery.length()速度含义
- AMD应用程序在浏览器中的加载速度是否快于CommonJS应用程序
- 如何在不影响网站页面速度的情况下在我的网站上使用谷歌字体
- 使用jquery检测上传速度带宽
- 检测带宽/互联网连接速度在javascript
- 检测互联网速度/带宽