From 89f8df3a3a5f374f23a151c92dafe8707d299056 Mon Sep 17 00:00:00 2001
From: snowinszu <86755838@qq.com>
Date: Wed, 5 Jan 2022 23:05:26 +0800
Subject: [PATCH] update demo
---
README.md | 6 +-
Readme_zh.md | 6 +-
demo/cbplayer.html | 2 +-
demo/chimee.html | 2 +-
demo/chplayer.html | 2 +-
demo/ckplayer.html | 2 +-
demo/clappr.html | 2 +-
demo/dplayer.html | 2 +-
demo/flowplayer.html | 2 +-
demo/fluidplayer.html | 2 +-
demo/jwplayer.html | 8 +-
demo/mediaelement.html | 2 +-
demo/openplayer.html | 2 +-
demo/playerjs/index.html | 2 +-
demo/plyr.html | 2 +-
demo/ppvod/DPlayer.min.js | 2 -
...06\346\210\220\350\257\264\346\230\216.md" | 16 -
demo/ppvod/dplayer/DPlayer.min.css | 4 +
demo/ppvod/dplayer/DPlayer.min.css.map | 1 +
demo/ppvod/dplayer/DPlayer.min.js | 2 +
demo/ppvod/dplayer/DPlayer.min.js.map | 1 +
demo/ppvod/dplayer/DPlayer.min.mod.js | 1 +
demo/ppvod/dplayer/hls.min.js | 1 +
...46\210\220p2p\346\226\271\346\263\225.txt" | 15 +
demo/ppvod/share.js | 343 -----------------
demo/ppvod/share2.js | 351 ++++++++++++++++++
demo/quick-start.html | 2 +-
demo/standalone.html | 8 +-
demo/tcplayer.html | 2 +-
demo/videojs.html | 2 +-
demo/xgplayer.html | 2 +-
package.json | 7 +-
32 files changed, 411 insertions(+), 393 deletions(-)
delete mode 100644 demo/ppvod/DPlayer.min.js
delete mode 100755 "demo/ppvod/P2P\351\233\206\346\210\220\350\257\264\346\230\216.md"
create mode 100644 demo/ppvod/dplayer/DPlayer.min.css
create mode 100644 demo/ppvod/dplayer/DPlayer.min.css.map
create mode 100644 demo/ppvod/dplayer/DPlayer.min.js
create mode 100644 demo/ppvod/dplayer/DPlayer.min.js.map
create mode 100644 demo/ppvod/dplayer/DPlayer.min.mod.js
create mode 100644 demo/ppvod/dplayer/hls.min.js
create mode 100644 "demo/ppvod/ppvod\351\233\206\346\210\220p2p\346\226\271\346\263\225.txt"
delete mode 100755 demo/ppvod/share.js
create mode 100644 demo/ppvod/share2.js
diff --git a/README.md b/README.md
index bf66f4b8..87cc8bf6 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
**English | [简体中文](Readme_zh.md)**
-
+
Let your viewers become your unlimitedly scalable CDN.
@@ -75,13 +75,13 @@ See [API.md](https://www.hdtvcloud.com/en/views/web/API.html)
Register your domain in `https://oms.cdnbye.com`, where you can view p2p-related information.
## Related Projects
-- [iosweb-p2p-engine](https://github.com/swarm-cloud/iosweb-p2p-engine) - Live/VOD P2P Engine for iOS Safari.
+- [hls-sw-p2p-engine](https://github.com/swarm-cloud/hls-sw-p2p-engine) - Live/VOD P2P Engine for all browsers including iOS Safari, with the help of ServiceWorker.
- [android-p2p-engine](https://github.com/cdnbye/android-p2p-engine) - Live/VOD P2P Engine for Android and Android TV.
- [ios-p2p-engine](https://github.com/cdnbye/ios-p2p-engine) - iOS Video P2P Engine for Any Player.
- [flutter-p2p-engine](https://github.com/cdnbye/flutter-p2p-engine) - Live/VOD P2P Engine for Flutter, contributed by [mjl0602](https://github.com/mjl0602).
- [shaka-p2p-engine](https://github.com/cdnbye/shaka-p2p-engine) - P2P engine for Shaka Player.
- [dashjs-p2p-engine](https://github.com/cdnbye/dashjs-p2p-engine) - Web Video Delivery Technology with No Plugins for MPEG-dash.
-- [mp4-p2p-engine](https://github.com/cdnbye/mp4-p2p-engine) - Web Video Delivery Technology with No Plugins for MP4.
+- [mp4-sw-p2p-engine](https://github.com/swarm-cloud/mp4-sw-p2p-engine) - Web Video Delivery Technology for MP4.
-
-
+
+
-
+
@@ -22,7 +22,7 @@
jwplayer.key = "uoW6qHjBL3KNudxKVnwa3rt5LlTakbko9e6aQ6VUyKQ=";
jwplayer('demoplayer').setup({
- file: 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8',
+ file: 'https://wowza.peer5.com/live/smil:bbb_abr.smil/chunklist_b591000.m3u8',
width: 512,
height: 288,
autostart: true,
diff --git a/demo/mediaelement.html b/demo/mediaelement.html
index 2e3a2364..d7130f5c 100644
--- a/demo/mediaelement.html
+++ b/demo/mediaelement.html
@@ -9,7 +9,7 @@
diff --git a/demo/openplayer.html b/demo/openplayer.html
index 951a2f11..ef77b2b1 100644
--- a/demo/openplayer.html
+++ b/demo/openplayer.html
@@ -7,7 +7,7 @@
-
+
download info:
diff --git a/demo/playerjs/index.html b/demo/playerjs/index.html
index d1e51a05..ba5ee55d 100644
--- a/demo/playerjs/index.html
+++ b/demo/playerjs/index.html
@@ -4,7 +4,7 @@
+改为
+
+
+2. 将本文件夹中的 share2.js 放到目录 /home/work/public/js/
+
+3. 用本文件夹中的 dplayer文件夹 替换 /home/work/public/dplayer
+
+4. 登录cdnbye控制台 https://www.cdnbye.com/oms/ 绑定播放域名
+
+5. 刷新浏览器缓存
diff --git a/demo/ppvod/share.js b/demo/ppvod/share.js
deleted file mode 100755
index 5b9eba27..00000000
--- a/demo/ppvod/share.js
+++ /dev/null
@@ -1,343 +0,0 @@
-var time = 0;
-var _CK_ = null;
-var bOpen = 0;
-var bObj = null;
-var msgcache = {}
-var player;
-function BrowserType() {
- var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
- var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
- // var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
- var isIE = window.ActiveXObject || "ActiveXObject" in window
- // var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
- var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
- var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
- var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
- var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1 && !isEdge; //判断Chrome浏览器
-
- if (isIE) {
- var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
- reIE.test(userAgent);
- var fIEVersion = parseFloat(RegExp["$1"]);
- if (userAgent.indexOf('MSIE 6.0') != -1) {
- return "IE6";
- } else if (fIEVersion == 7) { return "IE7"; }
- else if (fIEVersion == 8) { return "IE8"; }
- else if (fIEVersion == 9) { return "IE9"; }
- else if (fIEVersion == 10) { return "IE10"; }
- else if (userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/)) {
- return "IE11";
- }
- else { return "0" }//IE版本过低
- }//isIE end
-
- if (isFF) { return "FF"; }
- if (isOpera) { return "Opera"; }
- if (isSafari) { return "Safari"; }
- if (isChrome) { return "Chrome"; }
- if (isEdge) { return "Edge"; }
-}//myBrowser() end
-
-
-function SetCookie(name, value) {
- var Days = 30;
- var exp = new Date();
- exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
- document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
-}
-function getCookie(name) {
- var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
- if (arr != null) return unescape(arr[2]); return null;
-}
-window.onerror = function () {
- return true;
-}
-function crossdomainCheck() {
- if (!hosts) return;
- var referagent = document.referrer;
- if (redirecturl.indexOf("http") != 0 && redirecturl.indexOf("https") != 0)
- redirecturl = "http://" + redirecturl
- if (!referagent)
- return top.location.href = redirecturl;
-
- var hostsarr = hosts.split("|");
- var refer = false;
- var url = referagent;
- var reg = /^http(s)?:\/\/(.*?)\//;
-
- for (var i = 0; i <= hostsarr.length; i++) {
- if (reg.exec(url) && reg.exec(url)[2].indexOf(hostsarr[i]) >= 0) {
- refer = true;
- break;
- }
- };
- if (!refer) {
- top.location.href = redirecturl;
- };
-}
-
-function orderviewinit(timeout) {
- var isAndroid = navigator.userAgent.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
- var isIOS = false;
- if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent))
- isIOS = true
- if (isIOS || isAndroid) {
- $("#orderview").css("width", "280px");
- $("#orderview").css("height", "320px");
- $("#orderview").css("left", "280px");
- /**
- $("#orderview").css("margin-left", "0px");
- $("#orderview").css("margin-top", "0px");
- $("#orderview").css("bototm", "10px");
- $("#orderview").css("left", "-20px");
- $("#orderview").css("display", "block");
- $("#mvideo").css("height", "260px");
-
- $(".closeview").hide()
- */
-
- }
- $(".closeview").click(function () {
- $("#orderview").hide();
- });
- player.on('pause', function () {
- $("#orderview").show();
- })
-
-}
-
-
-function init(order) {
-
- crossdomainCheck();
- var cookieTime = getCookie(videoid + "_time"); //调用已记录的time
- //alert("上次播放时间"+ cookieTime +"");
- if (!cookieTime || cookieTime == undefined) { //如果没有记录值,则设置时间0开始播放
- cookieTime = 0;
- }
- function cb() {
- if (order)
- orderviewinit();
- }
-
- if (playertype == 'ckplayer')
- ckplay(main, xml, cookieTime, cb);
- else
- dplay(main, xml, cookieTime, cb);
-
-
-
-}
-function timeHandler(t) {
- if (t > -1)
- SetCookie(videoid + "_time", t);
-}
-function loadHandler() {
- player.addListener('time', timeHandler); //监听播放时间
-}
-
-//ckplayer
-function ckplay(main, xml, starttime, cb) {
- var hostname = window.location.hostname
- var port = window.location.port || '80';
- var picurl = window.location.protocol + "//" + window.location.host + pic;
- var url = window.location.protocol + "//" + window.location.host + main
- if (main.indexOf("/") != 0)
- url = window.location.protocol + "//" + window.location.host + "/" + main
- xml = window.location.protocol + "//" + window.location.host + xml
- var isiPad = navigator.userAgent.match(/iPhone|Linux|Android|iPad|iPod|ios|iOS|Windows Phone|Phone|WebOS/i) != null;
- if (isiPad) {
- document.getElementById('mvideo').innerHTML = ' '
- } else {
- var videoObject = {
- container: '.video',
- variable: 'player',
- loaded: 'loadHandler',
- autoplay: true,
- poster: picurl,
- adfront: l, //前置广告
- adfronttime: t,
- adfrontlink: r,
- adpause: d,//暂停广告
- adpausetime: t,
- adpauselink: u,
- video: url
- };
- }
-
- if (starttime > 0) {
- videoObject['seek'] = starttime;
- }
- player = new ckplayer(videoObject);
- cb();
-
-
-}
-var p2pdown = 0;
-
-//获得多码率列表
-function getPlayList(url, cb) {
-
- $.get(url, function (result) {
- cb(null, result);
- })
-}
-
-function getproxyurl(torrent, url, cb) {
- if (torrent == "") return cb(url);
- MPlayer.isReady(function (err) {
- if (err) return cb(url)
- MPlayer.play(torrent, function (err, newurl) {
- if (newurl) return cb(newurl)
- return cb(url)
- })
- })
-}
-//dplayer
-// var _peerId = '', _peerNum = 0, _totalP2PDownloaded = 0, _totalP2PUploaded = 0;
-function dplay(main, xml, starttime, cb) {
- var hostname = window.location.hostname
- var port = window.location.port || '80';
- var picurl = window.location.protocol + "//" + window.location.host + pic;
- var url = window.location.protocol + "//" + window.location.host + main
- if (main.indexOf("/") != 0)
- url = window.location.protocol + "//" + window.location.host + "/" + main
- xml = window.location.protocol + "//" + window.location.host + xml
-
- if (window.location.protocol.indexOf("https") >= 0)
- port = window.location.port ? window.location.port : 443
- else
- port = window.location.port ? window.location.port : 80
- // magnet = "";
- getproxyurl(magnet, url, function (url) {
- //分析url 获取播放列表
- getPlayList(url, function (err, result) {
- // var cdn = new NGCdn(cfg);
-
- var danmaku = {
- id: videoid, // Required, danmaku id, MUST BE UNIQUE, CAN NOT USE THESE IN YOUR NEW PLAYER: `https://dplayer.daoapp.io/list`
- api: '/', // Required, danmaku api
- token: 'tokendemo', // Optional, danmaku token for api
- unlimited: true,
- maximum: 100
- }
- //danmaku : danmaku,
- var playcfg = {
- container: document.getElementById('mvideo'),
- screenshot: true,
- pic: pic,
- video: {
- url: url,
- type: 'customHls',
- customType: {
- 'customHls': function (video, player) {
- const hls = new Hls({
- debug: false,
- // Other hlsjsConfig options provided by hls.js
- p2pConfig: {
- // logLevel: 'debug',
- live: false, // 如果是直播设为true
- channelIdPrefix: 'ppvod:',
- channelId: function (m3u8Url) {
- return window.location.hostname + videoid;
- }
- // Other p2pConfig options provided by CDNBye
- }
- });
- hls.loadSource(video.src);
- hls.attachMedia(video);
- // hls.p2pEngine.on('stats', function (stats) {
- // _totalP2PDownloaded = stats.totalP2PDownloaded;
- // _totalP2PUploaded = stats.totalP2PUploaded;
- // // updateStats();
- // }).on('peerId', function (peerId) {
- // _peerId = peerId;
- // }).on('peers', function (peers) {
- // _peerNum = peers.length;
- // // updateStats();
- // });
-
- }
- }
- },
- };
- if (danmuenable == 1)
- playcfg.danmaku = danmaku
-
-
- //多码率
- if (result) {
- var labels = ["标清", "高清", "超清", "蓝光"]
- var parser = new m3u8Parser.Parser();
- parser.push(result);
- parser.end();
- var qualitys = [];
- var playlist = parser.manifest.playlists;
- if (playlist && playlist.length > 1) {
- // console.log(playlist)
- //if proxy replace
-
- for (var i = 0; i < playlist.length; i++) {
- let rurl = playlist[i].uri
- if (url.indexOf(":1220") > 0)
- rurl = url.replace("index.m3u8", playlist[i].uri)
- qualitys.push({
- name: labels[i],
- url: rurl,
- type: 'hls'
- })
- console.log(rurl)
- }
- playcfg.video.quality = qualitys
- delete playcfg.video.url;
- playcfg.video.defaultQuality = 0;
- // console.log(playcfg)
- }
- }
- player = new DPlayer(playcfg);
- player.on('timeupdate', function () {
-
- var t = player.video.currentTime;
- if (t > 0)
- SetCookie(videoid + "_time", t);
- })
- if (starttime > 0)
- player.seek(starttime)
- var adELE = $("#indexview");
- player.on('pause', function () {
- if (d.length != 0) {
- adELE.html("").show();
- $('.adcontent img').load(function () {
- var adwidth = $('.adcontent').width();
- var adheight = $('.adcontent').height();
- $('.adcontent').css('marginLeft', '-' + (adwidth / 2) + 'px');
- $('.adcontent').css('marginTop', '-' + (adheight / 2) + 'px');
- })
-
- }
- })
- if (l.length != 0) {
- adELE.html("").show();
- $('.adcontent img').load(function () {
- var adwidth = $('.adcontent').width();
- var adheight = $('.adcontent').height();
- $('.adcontent').css('marginLeft', '-' + (adwidth / 2) + 'px');
- $('.adcontent').css('marginTop', '-' + (adheight / 2) + 'px');
- })
- setTimeout(() => {
- adELE.hide();
- player.play();
- }, t * 1000);
- } else {
- player.play();
- }
-
- player.on('play', function () {
- $("#orderview").hide();
- $("#indexview").hide();
- });
- cb();
- })
-
- })
-}
diff --git a/demo/ppvod/share2.js b/demo/ppvod/share2.js
new file mode 100644
index 00000000..c977c001
--- /dev/null
+++ b/demo/ppvod/share2.js
@@ -0,0 +1,351 @@
+var time = 0;
+var _CK_ = null;
+var bOpen = 0;
+var bObj = null;
+var msgcache = {}
+var player;
+function BrowserType() {
+ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
+ var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
+ // var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
+ var isIE = window.ActiveXObject || "ActiveXObject" in window
+ // var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
+ var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
+ var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
+ var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
+ var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1 && !isEdge; //判断Chrome浏览器
+
+ if (isIE) {
+ var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
+ reIE.test(userAgent);
+ var fIEVersion = parseFloat(RegExp["$1"]);
+ if (userAgent.indexOf('MSIE 6.0') != -1) {
+ return "IE6";
+ } else if (fIEVersion == 7) { return "IE7"; }
+ else if (fIEVersion == 8) { return "IE8"; }
+ else if (fIEVersion == 9) { return "IE9"; }
+ else if (fIEVersion == 10) { return "IE10"; }
+ else if (userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/)) {
+ return "IE11";
+ }
+ else { return "0" }//IE版本过低
+ }//isIE end
+
+ if (isFF) { return "FF"; }
+ if (isOpera) { return "Opera"; }
+ if (isSafari) { return "Safari"; }
+ if (isChrome) { return "Chrome"; }
+ if (isEdge) { return "Edge"; }
+}//myBrowser() end
+
+
+function SetCookie(name, value) {
+ var Days = 30;
+ var exp = new Date();
+ exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
+ document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
+}
+function getCookie(name) {
+ var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
+ if (arr != null) return unescape(arr[2]); return null;
+}
+window.onerror = function () {
+ return true;
+}
+
+function crossdomainCheck() {
+ if (!hosts) return;
+ var referagent = document.referrer;
+ if (redirecturl.indexOf("http") != 0 && redirecturl.indexOf("https") != 0 && redirecturl != "/")
+ redirecturl = "http://" + redirecturl
+ if (!referagent)
+ return top.location.href = redirecturl;
+
+ var hostsarr = hosts.split("|");
+ var refer = false;
+ var url = referagent;
+ var reg = /^http(s)?:\/\/(.*?)\//;
+ for (var i = 0; i <= hostsarr.length; i++) {
+ if(url.indexOf(hostsarr[i])>=0){
+ //if (reg.exec(url) && reg.exec(url)[2].indexOf(hostsarr[i]) >= 0) {
+ refer = true;
+ break;
+ }
+ };
+ if (refer == false) {
+ try{
+ top.location.href = redirecturl;
+ }catch(e){
+ location.href = "404"
+ }
+ };
+}
+function orderviewinit(timeout) {
+ var isAndroid = navigator.userAgent.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
+ var isIOS = false;
+ if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent))
+ isIOS = true
+ if (isIOS || isAndroid) {
+ $("#orderview").css("width", "280px");
+ $("#orderview").css("height", "320px");
+ $("#orderview").css("left", "280px");
+ /**
+ $("#orderview").css("margin-left", "0px");
+ $("#orderview").css("margin-top", "0px");
+ $("#orderview").css("bototm", "10px");
+ $("#orderview").css("left", "-20px");
+ $("#orderview").css("display", "block");
+ $("#mvideo").css("height", "260px");
+
+ $(".closeview").hide()
+ */
+
+ }
+ $(".closeview").click(function () {
+ $("#orderview").hide();
+ });
+ player.on('pause', function () {
+ $("#orderview").show();
+ })
+
+}
+
+
+function init(order) {
+ crossdomainCheck();
+
+ var cookieTime = getCookie(videoid + "_time"); //调用已记录的time
+ //alert("上次播放时间"+ cookieTime +"");
+ if (!cookieTime || cookieTime == undefined) { //如果没有记录值,则设置时间0开始播放
+ cookieTime = 0;
+ }
+ function cb() {
+ if (order)
+ orderviewinit();
+ }
+
+ if (playertype == 'ckplayer')
+ ckplay(main, xml, cookieTime, cb);
+ else
+ dplay(main, xml, cookieTime, cb);
+
+
+
+}
+function timeHandler(t) {
+ if (t > -1)
+ SetCookie(videoid + "_time", t);
+}
+function loadHandler() {
+ player.addListener('time', timeHandler); //监听播放时间
+}
+
+//ckplayer
+function ckplay(main, xml, starttime, cb) {
+ var hostname = window.location.hostname
+ var port = window.location.port || '80';
+ var picurl = window.location.protocol + "//" + window.location.host + pic;
+ var url = window.location.protocol + "//" + window.location.host + main
+ if (main.indexOf("/") != 0)
+ url = window.location.protocol + "//" + window.location.host + "/" + main
+ xml = window.location.protocol + "//" + window.location.host + xml
+ var isiPad = navigator.userAgent.match(/iPhone|Linux|Android|iPad|iPod|ios|iOS|Windows Phone|Phone|WebOS/i) != null;
+ if (isiPad) {
+ document.getElementById('mvideo').innerHTML = ' '
+ } else {
+ var videoObject = {
+ container: '.video',
+ variable: 'player',
+ loaded: 'loadHandler',
+ autoplay: true,
+ poster: picurl,
+ adfront: l, //前置广告
+ adfronttime: t,
+ adfrontlink: r,
+ adpause: d,//暂停广告
+ adpausetime: t,
+ adpauselink: u,
+ video: url
+ };
+ }
+
+ if (starttime > 0) {
+ videoObject['seek'] = starttime;
+ }
+ player = new ckplayer(videoObject);
+ cb();
+
+
+}
+var p2pdown = 0;
+function getPlayList(url, cb) {
+
+ $.get(url, function (result) {
+ cb(null, result);
+ })
+}
+
+
+
+function getproxyurl(torrent, url, cb) {
+ if (torrent == "") return cb(url);
+ MPlayer.isReady(function (err) {
+ if (err) return cb(url)
+ MPlayer.play(torrent, function (err, newurl) {
+ if (newurl) return cb(newurl)
+ return cb(url)
+ })
+ })
+}
+//dplayer
+function dplay(main, xml, starttime, cb) {
+ var type = 'hls';
+ if(Hls.isSupported() && Hls.WEBRTC_SUPPORT) {
+ type = 'customHls';
+ }
+ var newurl = main + "?skipl=1";
+ if (main.indexOf("?") > 0)
+ newurl = main + "&skipl=1"
+ getPlayList(newurl, function (err, result) {
+ var url = main
+ var playcfg = {
+ container: document.getElementById('mvideo'),
+ screenshot: true,
+ autoplay: true,
+ pic: pic,
+ video: {
+ pic: pic,
+ url: url,
+ type: type,
+ customType: {
+ 'customHls': function (video, player) {
+ const hls = new Hls({
+ debug: false,
+ // Other hlsjsConfig options provided by hls.js
+ p2pConfig: {
+ live: false,
+ showSlogan: false,
+ channelIdPrefix: location.hostname,
+ channelId: function (url) {
+ return videoid
+ },
+ segmentId: function (streamId, sn, url, range) {
+ return ""+sn;
+ },
+ }
+ });
+ hls.loadSource(video.src);
+ hls.attachMedia(video);
+ }
+ },
+ },
+ };
+
+ if (result) {
+ var labels = ["标清", "高清", "超清", "蓝光"]
+ var parser = new m3u8Parser.Parser();
+ parser.push(result);
+ parser.end();
+ var qualitys = [];
+ var playlist = parser.manifest.playlists;
+
+ if (playlist && playlist.length > 1) {
+ console.log(playlist, playlist.length)
+ if (main.indexOf("https") < 0 && main.indexOf("http") < 0)
+ main = window.location.protocol + "//" + window.location.host + main;
+ // alert(main)
+ let mainURL = new URL(main);
+ for (var i = 0; i < playlist.length; i++) {
+ let surl = playlist[i].uri;
+ if (surl.indexOf("https") < 0 && surl.indexOf("http") < 0) {
+
+ surl = mainURL.protocol + "//" + mainURL.host + surl
+ }
+ qualitys.push({
+ name: labels[i],
+ url: surl,
+ type: 'hls'
+ })
+ }
+ playcfg.video.quality = qualitys
+ delete playcfg.video.url;
+ playcfg.video.defaultQuality = 0;
+ console.log(playcfg)
+ }
+ }
+
+ var hostname = window.location.hostname
+ var port = window.location.port || '80';
+ var picurl = window.location.protocol + "//" + window.location.host + pic;
+ var url = window.location.protocol + "//" + window.location.host + main
+ if (main.indexOf("/") != 0)
+ url = window.location.protocol + "//" + window.location.host + "/" + main
+ xml = window.location.protocol + "//" + window.location.host + xml
+
+ if (window.location.protocol.indexOf("https") >= 0)
+ port = window.location.port ? window.location.port : 443
+ else
+ port = window.location.port ? window.location.port : 80
+ // magnet = "";
+ //getproxyurl(magnet, url, function (url) {
+ //分析url 获取播放列表
+
+ // var cdn = new NGCdn(cfg);
+
+ var danmaku = {
+ id: videoid, // Required, danmaku id, MUST BE UNIQUE, CAN NOT USE THESE IN YOUR NEW PLAYER: `https://dplayer.daoapp.io/list`
+ api: '/', // Required, danmaku api
+ token: 'tokendemo', // Optional, danmaku token for api
+ unlimited: true,
+ maximum: 100
+ }
+
+ if (danmuenable == 1)
+ playcfg.danmaku = danmaku
+
+
+ player = new DPlayer(playcfg);
+ player.on('timeupdate', function () {
+
+ var t = player.video.currentTime;
+ if (t > 0)
+ SetCookie(videoid + "_time", t);
+ })
+ if (starttime > 0)
+ player.seek(starttime)
+ var adELE = $("#indexview");
+ player.on('pause', function () {
+ if (d.length != 0) {
+ adELE.html("").show();
+ $('.adcontent img').load(function () {
+ var adwidth = $('.adcontent').width();
+ var adheight = $('.adcontent').height();
+ $('.adcontent').css('marginLeft', '-' + (adwidth / 2) + 'px');
+ $('.adcontent').css('marginTop', '-' + (adheight / 2) + 'px');
+ })
+
+ }
+ })
+ if (l.length != 0) {
+ adELE.html("").show();
+ $('.adcontent img').load(function () {
+ var adwidth = $('.adcontent').width();
+ var adheight = $('.adcontent').height();
+ $('.adcontent').css('marginLeft', '-' + (adwidth / 2) + 'px');
+ $('.adcontent').css('marginTop', '-' + (adheight / 2) + 'px');
+ })
+ setTimeout(() => {
+ adELE.hide();
+ player.play();
+ }, t * 1000);
+ } else {
+ player.play();
+ }
+
+ player.on('play', function () {
+ $("#orderview").hide();
+ $("#indexview").hide();
+ });
+ cb();
+ })
+}
diff --git a/demo/quick-start.html b/demo/quick-start.html
index 6dae641f..649b2826 100644
--- a/demo/quick-start.html
+++ b/demo/quick-start.html
@@ -6,7 +6,7 @@ download info: