关键词搜索

源码搜索 ×
×

h5+js判断网速连接最快的服务器

发布2021-12-30浏览853次

详情内容

最近写了一个视频播放的H5,视频的带宽资源是有限的,所以将视频放在不同的服务器上,当用户访问的时候将选择最快的服务器进行播放。

播放器采用的是ckplayer插件,现贴出以下代码进行备份。

  1. <script>
  2. function xplayer(vpath,vpic){
  3. document.body.scrollTop = 0;
  4. document.documentElement.scrollTop = 0;
  5. var videoObject = {
  6. container: '#video', //容器的ID或className
  7. variable: 'player',//播放函数名称
  8. poster:vpic,//封面图片
  9. seek: 0,
  10. video:[//视频地址列表形式
  11. [vpath, 'video/mp4', '中文标清', 0]
  12. ]
  13. };
  14. var player = new ckplayer(videoObject);
  15. player.videoPlay();
  16. }
  17. function getQueryString(name){
  18. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  19. var r = window.location.search.substr(1).match(reg);
  20. if(r != null){
  21. return unescape(r[2]);
  22. }
  23. return null
  24. }
  25. var mydata1 = {"video_list_id":getQueryString('video_list_id'),"course_id":getQueryString('course_id')}; //这里传入视频ID
  26. var autoname = [];
  27. var autourl = new Array();
  28. var autwz = new Array();
  29. var jump=1
  30. var t={};
  31. var yy = 0 ;
  32. var mm = [0,999999999];
  33. var test = (function(){
  34. let result;
  35. $.ajax({
  36. type: "get",
  37. url: directUrl = "http://www.xxx.com/api/getserver", //这里得到服务器的列表
  38. data: {"data":JSON.stringify(mydata1)},
  39. async: false,
  40. success: function(data) {
  41. var i=data.length ;
  42. for (var i=0;i<data.length;i++)
  43. {
  44. //document.write('<input type="text" name="v' + i + '" id="v' + i +'">'); //这里可以注释掉
  45. autoname[i] = data[i]['server_list_name'];
  46. autourl[i] = data[i]['url'] ;
  47. autwz[i] = data[i]['server'];
  48. // ************ 检测网速核心代码 start *************
  49. var img = new Image;
  50. img.onerror= (function(j){
  51. return function(){
  52. t[autourl[j]] =(new Date())- t[autourl[j]]; //记入时间差
  53. yy= parseInt(t[autourl[j]]);
  54. //$("#v"+j).val(t[autourl[j]]); //这里可以注释掉
  55. if (yy<parseInt(mm[1])){
  56. mm[0] = j;
  57. mm[1] = yy;
  58. }
  59. if(jump) {
  60. jump=0;
  61. // console.log(mm); //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 得到最快的网速
  62. console.log(autwz[mm[0]]); //>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 得到最快的服务器
  63. playervideo(autwz[mm[0]]);
  64. //alert("网速最快的服务器是 " + autwz[mm[0]]);
  65. }
  66. }
  67. })(i);
  68. //闭包传值
  69. img.src = autourl[i] + Math.random();
  70. t[autourl[i]] = (+new Date());//记录开始载入时间
  71. // ************ 检测网速核心代码 end *************
  72. }
  73. }
  74. });
  75. return result;
  76. })();
  77. //播放影片
  78. function playervideo(server){
  79. console.log(token);
  80. $.ajax({
  81. type: "post",
  82. url: "http://www.xxx.com/api/video",
  83. data: {"data":JSON.stringify(mydata1)},
  84. headers:{"token":token},
  85. async: true,
  86. success: function(data) {
  87. console.log(data);
  88. var json = data;
  89. video_list_pic = 'http://www.xxx.com/upfiles/' + json[0].video_list_pic;
  90. console.log(video_list_pic);
  91. video_list_path = server + json[0].video_list_path;
  92. console.log(video_list_path);
  93. setTimeout(xplayer(video_list_path,video_list_pic),3000);
  94. form.render();
  95. }
  96. })
  97. }
  98. </script>

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载