ckplayer-plus 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ckplayer.js +203 -70
- package/dist/ckplayer.min.js +2 -2
- package/dist/index.cjs +173 -62
- package/dist/index.js +173 -62
- package/dist/react.cjs +176 -62
- package/dist/react.js +176 -62
- package/dist/vue.cjs +183 -62
- package/dist/vue.js +183 -62
- package/package.json +1 -1
- package/types/vue.d.ts +2 -0
package/dist/react.cjs
CHANGED
|
@@ -212,7 +212,7 @@ var require_ckplayer = __commonJS({
|
|
|
212
212
|
cdnFallback: true
|
|
213
213
|
// getPath 失败时是否回退到 jsDelivr(内网可设 false,并配置 pluginPath)
|
|
214
214
|
};
|
|
215
|
-
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.
|
|
215
|
+
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.8/dist/";
|
|
216
216
|
function ckplayerEmbed(videoObj) {
|
|
217
217
|
var rightMenu = [
|
|
218
218
|
{
|
|
@@ -242,6 +242,9 @@ var require_ckplayer = __commonJS({
|
|
|
242
242
|
var seekApplyLock = false;
|
|
243
243
|
var decodeRecoverCount = 0;
|
|
244
244
|
var hlsStartPositionUsed = false;
|
|
245
|
+
var hlsResumeTarget = -1;
|
|
246
|
+
var hlsLoadAt = -1;
|
|
247
|
+
var hlsLoadTs = 0;
|
|
245
248
|
var oldTime = 0, playTime = 0, firstSeekTime = -1, maxSeeTime = 0;
|
|
246
249
|
var isChangeDef = true;
|
|
247
250
|
var playType = "";
|
|
@@ -407,7 +410,7 @@ var require_ckplayer = __commonJS({
|
|
|
407
410
|
}
|
|
408
411
|
var allowCdn = !vars || vars["cdnFallback"] !== false;
|
|
409
412
|
var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
410
|
-
if (!allowCdn || !cdn || cdn.indexOf("1.0.
|
|
413
|
+
if (!allowCdn || !cdn || cdn.indexOf("1.0.8") > -1) {
|
|
411
414
|
return folder + "/" + file;
|
|
412
415
|
}
|
|
413
416
|
if (cdn.slice(-1) !== "/") {
|
|
@@ -565,9 +568,120 @@ var require_ckplayer = __commonJS({
|
|
|
565
568
|
changeVideo(video.attr("src"));
|
|
566
569
|
}
|
|
567
570
|
return player;
|
|
571
|
+
}, parseResumeSeekFromVars = function() {
|
|
572
|
+
if (isUndefined(vars["seek"])) {
|
|
573
|
+
return 0;
|
|
574
|
+
}
|
|
575
|
+
if (valType(vars["seek"]) == "number" && vars["seek"] > 0) {
|
|
576
|
+
return vars["seek"];
|
|
577
|
+
}
|
|
578
|
+
if (valType(vars["seek"]) == "string" && vars["seek"] == "cookie" && cookieName) {
|
|
579
|
+
var cke = player.cookie(cookieName);
|
|
580
|
+
if (cke && cke["time"]) {
|
|
581
|
+
return cke["time"];
|
|
582
|
+
}
|
|
583
|
+
return 0;
|
|
584
|
+
}
|
|
585
|
+
if (valType(vars["seek"]) == "string" && vars["seek"] !== "" && !isNaN(parseFloat(vars["seek"]))) {
|
|
586
|
+
return parseFloat(vars["seek"]);
|
|
587
|
+
}
|
|
588
|
+
return 0;
|
|
589
|
+
}, applyResumeSeekState = function(t) {
|
|
590
|
+
if (!t || t <= 0) {
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
seekTime = t;
|
|
594
|
+
maxSeeTime = Math.max(maxSeeTime, t);
|
|
595
|
+
if (firstSeekTime < 0) {
|
|
596
|
+
firstSeekTime = t;
|
|
597
|
+
}
|
|
598
|
+
}, prepareCookieAndSeek = function() {
|
|
599
|
+
if (vars["cookie"]) {
|
|
600
|
+
if (valType(vars["cookie"]) == "array" && vars["cookie"].length >= 2) {
|
|
601
|
+
if (vars["cookie"][0] && valType(vars["cookie"][0]) == "string") {
|
|
602
|
+
cookieName = vars["cookie"][0];
|
|
603
|
+
}
|
|
604
|
+
if (vars["cookie"][1] && valType(vars["cookie"][1]) == "number") {
|
|
605
|
+
cookieTime = vars["cookie"][1];
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
if (valType(vars["cookie"]) == "object" && !isUndefined(vars["cookie"]["name"])) {
|
|
609
|
+
cookieName = vars["cookie"]["name"];
|
|
610
|
+
if (!isUndefined(vars["cookie"]["hour"]) && valType(vars["cookie"]["hour"]) == "number") {
|
|
611
|
+
cookieTime = vars["cookie"]["hour"];
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
if (valType(vars["cookie"]) == "string") {
|
|
615
|
+
cookieName = vars["cookie"];
|
|
616
|
+
}
|
|
617
|
+
if (cookieName) {
|
|
618
|
+
cookieName = cookieName.replace(/[ ]*,[ ]*|[ ]+/g, "").replace(/[ ]*;[ ]*|[ ]+/g, "");
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
if (!seekTime) {
|
|
622
|
+
applyResumeSeekState(parseResumeSeekFromVars());
|
|
623
|
+
}
|
|
624
|
+
}, hlsSeekTo = function(target, force) {
|
|
625
|
+
if (!hls || typeof hls.startLoad !== "function" || !video) {
|
|
626
|
+
return false;
|
|
627
|
+
}
|
|
628
|
+
if (isNaN(target) || target < 0) {
|
|
629
|
+
target = 0;
|
|
630
|
+
}
|
|
631
|
+
var curTime = video.currentTime || 0;
|
|
632
|
+
if (!force) {
|
|
633
|
+
if (hlsResumeTarget >= 0 && Math.abs(hlsResumeTarget - target) < 1.5) {
|
|
634
|
+
if (timeInBuffered(target) && Math.abs(curTime - target) < 2.5) {
|
|
635
|
+
return true;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
if (timeInBuffered(target) && Math.abs(curTime - target) < 1.5) {
|
|
639
|
+
hlsResumeTarget = target;
|
|
640
|
+
return true;
|
|
641
|
+
}
|
|
642
|
+
if (hlsLoadAt >= 0 && Math.abs(hlsLoadAt - target) < 1.5 && Date.now() - hlsLoadTs < 4e3) {
|
|
643
|
+
return true;
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
hlsLoadAt = target;
|
|
647
|
+
hlsLoadTs = Date.now();
|
|
648
|
+
hlsResumeTarget = target;
|
|
649
|
+
try {
|
|
650
|
+
hls.startLoad(target);
|
|
651
|
+
} catch (event2) {
|
|
652
|
+
return false;
|
|
653
|
+
}
|
|
654
|
+
return true;
|
|
655
|
+
}, destroyStreamPlayers = function() {
|
|
656
|
+
clearSeekRetry();
|
|
657
|
+
seekApplyLock = false;
|
|
658
|
+
hlsStartPositionUsed = false;
|
|
659
|
+
hlsResumeTarget = -1;
|
|
660
|
+
hlsLoadAt = -1;
|
|
661
|
+
hlsLoadTs = 0;
|
|
662
|
+
decodeRecoverCount = 0;
|
|
663
|
+
if (hls) {
|
|
664
|
+
try {
|
|
665
|
+
hls.destroy();
|
|
666
|
+
} catch (event2) {
|
|
667
|
+
}
|
|
668
|
+
hls = null;
|
|
669
|
+
}
|
|
670
|
+
if (pugPlayer) {
|
|
671
|
+
try {
|
|
672
|
+
pugPlayer.pause();
|
|
673
|
+
pugPlayer.unload();
|
|
674
|
+
pugPlayer.detachMediaElement();
|
|
675
|
+
pugPlayer.destroy();
|
|
676
|
+
} catch (event2) {
|
|
677
|
+
}
|
|
678
|
+
pugPlayer = null;
|
|
679
|
+
}
|
|
568
680
|
}, changeVideo = function(vstr) {
|
|
569
681
|
var i2 = 0;
|
|
570
682
|
ensureAutoPlug(vstr);
|
|
683
|
+
prepareCookieAndSeek();
|
|
684
|
+
destroyStreamPlayers();
|
|
571
685
|
if (video.attr("src") || video.htm()) {
|
|
572
686
|
player.pause();
|
|
573
687
|
}
|
|
@@ -652,46 +766,6 @@ var require_ckplayer = __commonJS({
|
|
|
652
766
|
if (isChangeDef) {
|
|
653
767
|
checkDefinition();
|
|
654
768
|
}
|
|
655
|
-
if (vars["cookie"]) {
|
|
656
|
-
if (valType(vars["cookie"]) == "array" && vars["cookie"].length >= 2) {
|
|
657
|
-
if (vars["cookie"][0] && valType(vars["cookie"][0]) == "string") {
|
|
658
|
-
cookieName = vars["cookie"][0];
|
|
659
|
-
}
|
|
660
|
-
if (vars["cookie"][1] && valType(vars["cookie"][1]) == "number") {
|
|
661
|
-
cookieTime = vars["cookie"][1];
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
if (valType(vars["cookie"]) == "object" && !isUndefined(vars["cookie"]["name"])) {
|
|
665
|
-
cookieName = vars["cookie"]["name"];
|
|
666
|
-
if (!isUndefined(vars["cookie"]["hour"]) && valType(vars["cookie"]["hour"]) == "number") {
|
|
667
|
-
cookieTime = vars["cookie"]["hour"];
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
if (valType(vars["cookie"]) == "string") {
|
|
671
|
-
cookieName = vars["cookie"];
|
|
672
|
-
}
|
|
673
|
-
if (cookieName) {
|
|
674
|
-
cookieName = cookieName.replace(/[ ]*,[ ]*|[ ]+/g, "").replace(/[ ]*;[ ]*|[ ]+/g, "");
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
if (!isUndefined(vars["seek"]) && !seekTime) {
|
|
678
|
-
if (valType(vars["seek"]) == "number" && vars["seek"] > 0) {
|
|
679
|
-
seekTime = vars["seek"];
|
|
680
|
-
} else if (valType(vars["seek"]) == "string" && vars["seek"] == "cookie" && cookieName) {
|
|
681
|
-
var cke = player.cookie(cookieName);
|
|
682
|
-
if (cke) {
|
|
683
|
-
seekTime = cke["time"];
|
|
684
|
-
}
|
|
685
|
-
} else if (valType(vars["seek"]) == "string" && vars["seek"] !== "" && !isNaN(parseFloat(vars["seek"]))) {
|
|
686
|
-
seekTime = parseFloat(vars["seek"]);
|
|
687
|
-
}
|
|
688
|
-
if (seekTime && seekTime > 0) {
|
|
689
|
-
maxSeeTime = Math.max(maxSeeTime, seekTime);
|
|
690
|
-
if (firstSeekTime < 0) {
|
|
691
|
-
firstSeekTime = seekTime;
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
}
|
|
695
769
|
}, plugPlayer = function(url) {
|
|
696
770
|
switch (vars["plug"]) {
|
|
697
771
|
case "hls.js":
|
|
@@ -721,13 +795,31 @@ var require_ckplayer = __commonJS({
|
|
|
721
795
|
}, hlsPlayer = function(url) {
|
|
722
796
|
var startHls = function() {
|
|
723
797
|
if (typeof Hls !== "undefined" && !isUndefined(Hls) && Hls.isSupported()) {
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
798
|
+
if (hls) {
|
|
799
|
+
try {
|
|
800
|
+
hls.destroy();
|
|
801
|
+
} catch (event2) {
|
|
802
|
+
}
|
|
803
|
+
hls = null;
|
|
804
|
+
}
|
|
805
|
+
var hlsConf = {
|
|
806
|
+
// 10s 分片流在续播点附近需要略大缓冲,减少卡住转圈
|
|
807
|
+
maxBufferLength: 30,
|
|
808
|
+
maxMaxBufferLength: 60
|
|
809
|
+
};
|
|
810
|
+
var resumeAt = seekTime;
|
|
811
|
+
if (!resumeAt) {
|
|
812
|
+
resumeAt = parseResumeSeekFromVars();
|
|
813
|
+
}
|
|
814
|
+
if (resumeAt && resumeAt > 0 && (isUndefined(vars["live"]) || !vars["live"])) {
|
|
815
|
+
hlsConf.startPosition = resumeAt;
|
|
816
|
+
maxSeeTime = Math.max(maxSeeTime, resumeAt);
|
|
728
817
|
if (firstSeekTime < 0) {
|
|
729
|
-
firstSeekTime =
|
|
818
|
+
firstSeekTime = resumeAt;
|
|
730
819
|
}
|
|
820
|
+
hlsResumeTarget = resumeAt;
|
|
821
|
+
hlsLoadAt = resumeAt;
|
|
822
|
+
hlsLoadTs = Date.now();
|
|
731
823
|
seekTime = 0;
|
|
732
824
|
hlsStartPositionUsed = true;
|
|
733
825
|
clearSeekRetry();
|
|
@@ -740,6 +832,21 @@ var require_ckplayer = __commonJS({
|
|
|
740
832
|
applyPendingSeek();
|
|
741
833
|
}
|
|
742
834
|
});
|
|
835
|
+
hls.on(Hls.Events.FRAG_BUFFERED, function(event2, data) {
|
|
836
|
+
if (hlsResumeTarget <= 0 || !data || !data.frag) {
|
|
837
|
+
return;
|
|
838
|
+
}
|
|
839
|
+
var fragStart = data.frag.start;
|
|
840
|
+
var fragEnd = fragStart + data.frag.duration;
|
|
841
|
+
if (hlsResumeTarget >= fragStart - 0.5 && hlsResumeTarget <= fragEnd + 0.5) {
|
|
842
|
+
if (!waited) {
|
|
843
|
+
waited = true;
|
|
844
|
+
if (C["buffer"]) {
|
|
845
|
+
C["buffer"].hide();
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
});
|
|
743
850
|
hls.on(Hls.Events.ERROR, function(event2, data) {
|
|
744
851
|
var code = 9;
|
|
745
852
|
var message2 = language["error"]["loadingFailed"];
|
|
@@ -1481,17 +1588,22 @@ var require_ckplayer = __commonJS({
|
|
|
1481
1588
|
clearSeekRetry();
|
|
1482
1589
|
return;
|
|
1483
1590
|
}
|
|
1591
|
+
if (t > 0) {
|
|
1592
|
+
maxSeeTime = Math.max(maxSeeTime, t);
|
|
1593
|
+
if (firstSeekTime < 0) {
|
|
1594
|
+
firstSeekTime = t;
|
|
1595
|
+
}
|
|
1596
|
+
}
|
|
1597
|
+
if (hlsSeekTo(t, !!force)) {
|
|
1598
|
+
clearSeekRetry();
|
|
1599
|
+
seekTime = 0;
|
|
1600
|
+
return;
|
|
1601
|
+
}
|
|
1484
1602
|
var readyEnough = !isUndefined(video.readyState) && video.readyState >= 2;
|
|
1485
1603
|
var bufferedOk = timeInBuffered(t);
|
|
1486
1604
|
if (!force && !bufferedOk && (!readyEnough || video.readyState < 3)) {
|
|
1487
1605
|
seekRetryCount++;
|
|
1488
1606
|
if (seekRetryCount <= 50) {
|
|
1489
|
-
try {
|
|
1490
|
-
if (hls && typeof hls.startLoad === "function") {
|
|
1491
|
-
hls.startLoad(t);
|
|
1492
|
-
}
|
|
1493
|
-
} catch (event2) {
|
|
1494
|
-
}
|
|
1495
1607
|
if (seekRetryTimer) {
|
|
1496
1608
|
clearTimeout(seekRetryTimer);
|
|
1497
1609
|
}
|
|
@@ -1502,12 +1614,6 @@ var require_ckplayer = __commonJS({
|
|
|
1502
1614
|
}
|
|
1503
1615
|
}
|
|
1504
1616
|
clearSeekRetry();
|
|
1505
|
-
if (t > 0) {
|
|
1506
|
-
maxSeeTime = Math.max(maxSeeTime, t);
|
|
1507
|
-
if (firstSeekTime < 0) {
|
|
1508
|
-
firstSeekTime = t;
|
|
1509
|
-
}
|
|
1510
|
-
}
|
|
1511
1617
|
seekApplyLock = true;
|
|
1512
1618
|
seekTime = 0;
|
|
1513
1619
|
try {
|
|
@@ -2171,7 +2277,8 @@ var require_ckplayer = __commonJS({
|
|
|
2171
2277
|
ad["frontPlay"] = false;
|
|
2172
2278
|
C["ad"].hide();
|
|
2173
2279
|
allBarShow();
|
|
2174
|
-
seekTime =
|
|
2280
|
+
seekTime = 0;
|
|
2281
|
+
applyResumeSeekState(parseResumeSeekFromVars());
|
|
2175
2282
|
if (ad["front"]["video"]) {
|
|
2176
2283
|
changeVideo(vars["video"]);
|
|
2177
2284
|
} else {
|
|
@@ -2756,11 +2863,15 @@ var require_ckplayer = __commonJS({
|
|
|
2756
2863
|
if (vars["timeScheduleAdjust"] == 5 && target > maxSeeTime && seekTime && Math.abs(seekTime - target) < 0.5) {
|
|
2757
2864
|
maxSeeTime = Math.max(maxSeeTime, target);
|
|
2758
2865
|
}
|
|
2759
|
-
if (target > 0.5 && !timeInBuffered(target) && video.readyState < 3) {
|
|
2866
|
+
if (target > 0.5 && !timeInBuffered(target) && video.readyState < 3 && !hls) {
|
|
2760
2867
|
seekTime = target;
|
|
2761
2868
|
applyPendingSeek(false);
|
|
2762
2869
|
return player;
|
|
2763
2870
|
}
|
|
2871
|
+
if (hlsSeekTo(target, false)) {
|
|
2872
|
+
seekTime = 0;
|
|
2873
|
+
return player;
|
|
2874
|
+
}
|
|
2764
2875
|
try {
|
|
2765
2876
|
video.currentTime = target;
|
|
2766
2877
|
seekTime = 0;
|
|
@@ -5975,7 +6086,7 @@ var require_ckplayer = __commonJS({
|
|
|
5975
6086
|
if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
|
|
5976
6087
|
var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
5977
6088
|
var m2 = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
|
|
5978
|
-
if (cdn && cdn.indexOf("1.0.
|
|
6089
|
+
if (cdn && cdn.indexOf("1.0.8") === -1 && m2) {
|
|
5979
6090
|
if (cdn.slice(-1) !== "/") {
|
|
5980
6091
|
cdn += "/";
|
|
5981
6092
|
}
|
|
@@ -6787,6 +6898,9 @@ function buildPlayerConfig(input) {
|
|
|
6787
6898
|
if (input.pluginPath) {
|
|
6788
6899
|
config.pluginPath = input.pluginPath;
|
|
6789
6900
|
}
|
|
6901
|
+
if (input.seek != null && input.seek !== "" && !isNaN(parseFloat(input.seek)) && parseFloat(input.seek) > 0) {
|
|
6902
|
+
config.seek = parseFloat(input.seek);
|
|
6903
|
+
}
|
|
6790
6904
|
for (var key in opts) {
|
|
6791
6905
|
if (Object.prototype.hasOwnProperty.call(opts, key) && key !== "container") {
|
|
6792
6906
|
config[key] = opts[key];
|
package/dist/react.js
CHANGED
|
@@ -207,7 +207,7 @@ var require_ckplayer = __commonJS({
|
|
|
207
207
|
cdnFallback: true
|
|
208
208
|
// getPath 失败时是否回退到 jsDelivr(内网可设 false,并配置 pluginPath)
|
|
209
209
|
};
|
|
210
|
-
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.
|
|
210
|
+
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.8/dist/";
|
|
211
211
|
function ckplayerEmbed(videoObj) {
|
|
212
212
|
var rightMenu = [
|
|
213
213
|
{
|
|
@@ -237,6 +237,9 @@ var require_ckplayer = __commonJS({
|
|
|
237
237
|
var seekApplyLock = false;
|
|
238
238
|
var decodeRecoverCount = 0;
|
|
239
239
|
var hlsStartPositionUsed = false;
|
|
240
|
+
var hlsResumeTarget = -1;
|
|
241
|
+
var hlsLoadAt = -1;
|
|
242
|
+
var hlsLoadTs = 0;
|
|
240
243
|
var oldTime = 0, playTime = 0, firstSeekTime = -1, maxSeeTime = 0;
|
|
241
244
|
var isChangeDef = true;
|
|
242
245
|
var playType = "";
|
|
@@ -402,7 +405,7 @@ var require_ckplayer = __commonJS({
|
|
|
402
405
|
}
|
|
403
406
|
var allowCdn = !vars || vars["cdnFallback"] !== false;
|
|
404
407
|
var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
405
|
-
if (!allowCdn || !cdn || cdn.indexOf("1.0.
|
|
408
|
+
if (!allowCdn || !cdn || cdn.indexOf("1.0.8") > -1) {
|
|
406
409
|
return folder + "/" + file;
|
|
407
410
|
}
|
|
408
411
|
if (cdn.slice(-1) !== "/") {
|
|
@@ -560,9 +563,120 @@ var require_ckplayer = __commonJS({
|
|
|
560
563
|
changeVideo(video.attr("src"));
|
|
561
564
|
}
|
|
562
565
|
return player;
|
|
566
|
+
}, parseResumeSeekFromVars = function() {
|
|
567
|
+
if (isUndefined(vars["seek"])) {
|
|
568
|
+
return 0;
|
|
569
|
+
}
|
|
570
|
+
if (valType(vars["seek"]) == "number" && vars["seek"] > 0) {
|
|
571
|
+
return vars["seek"];
|
|
572
|
+
}
|
|
573
|
+
if (valType(vars["seek"]) == "string" && vars["seek"] == "cookie" && cookieName) {
|
|
574
|
+
var cke = player.cookie(cookieName);
|
|
575
|
+
if (cke && cke["time"]) {
|
|
576
|
+
return cke["time"];
|
|
577
|
+
}
|
|
578
|
+
return 0;
|
|
579
|
+
}
|
|
580
|
+
if (valType(vars["seek"]) == "string" && vars["seek"] !== "" && !isNaN(parseFloat(vars["seek"]))) {
|
|
581
|
+
return parseFloat(vars["seek"]);
|
|
582
|
+
}
|
|
583
|
+
return 0;
|
|
584
|
+
}, applyResumeSeekState = function(t) {
|
|
585
|
+
if (!t || t <= 0) {
|
|
586
|
+
return;
|
|
587
|
+
}
|
|
588
|
+
seekTime = t;
|
|
589
|
+
maxSeeTime = Math.max(maxSeeTime, t);
|
|
590
|
+
if (firstSeekTime < 0) {
|
|
591
|
+
firstSeekTime = t;
|
|
592
|
+
}
|
|
593
|
+
}, prepareCookieAndSeek = function() {
|
|
594
|
+
if (vars["cookie"]) {
|
|
595
|
+
if (valType(vars["cookie"]) == "array" && vars["cookie"].length >= 2) {
|
|
596
|
+
if (vars["cookie"][0] && valType(vars["cookie"][0]) == "string") {
|
|
597
|
+
cookieName = vars["cookie"][0];
|
|
598
|
+
}
|
|
599
|
+
if (vars["cookie"][1] && valType(vars["cookie"][1]) == "number") {
|
|
600
|
+
cookieTime = vars["cookie"][1];
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
if (valType(vars["cookie"]) == "object" && !isUndefined(vars["cookie"]["name"])) {
|
|
604
|
+
cookieName = vars["cookie"]["name"];
|
|
605
|
+
if (!isUndefined(vars["cookie"]["hour"]) && valType(vars["cookie"]["hour"]) == "number") {
|
|
606
|
+
cookieTime = vars["cookie"]["hour"];
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
if (valType(vars["cookie"]) == "string") {
|
|
610
|
+
cookieName = vars["cookie"];
|
|
611
|
+
}
|
|
612
|
+
if (cookieName) {
|
|
613
|
+
cookieName = cookieName.replace(/[ ]*,[ ]*|[ ]+/g, "").replace(/[ ]*;[ ]*|[ ]+/g, "");
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
if (!seekTime) {
|
|
617
|
+
applyResumeSeekState(parseResumeSeekFromVars());
|
|
618
|
+
}
|
|
619
|
+
}, hlsSeekTo = function(target, force) {
|
|
620
|
+
if (!hls || typeof hls.startLoad !== "function" || !video) {
|
|
621
|
+
return false;
|
|
622
|
+
}
|
|
623
|
+
if (isNaN(target) || target < 0) {
|
|
624
|
+
target = 0;
|
|
625
|
+
}
|
|
626
|
+
var curTime = video.currentTime || 0;
|
|
627
|
+
if (!force) {
|
|
628
|
+
if (hlsResumeTarget >= 0 && Math.abs(hlsResumeTarget - target) < 1.5) {
|
|
629
|
+
if (timeInBuffered(target) && Math.abs(curTime - target) < 2.5) {
|
|
630
|
+
return true;
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
if (timeInBuffered(target) && Math.abs(curTime - target) < 1.5) {
|
|
634
|
+
hlsResumeTarget = target;
|
|
635
|
+
return true;
|
|
636
|
+
}
|
|
637
|
+
if (hlsLoadAt >= 0 && Math.abs(hlsLoadAt - target) < 1.5 && Date.now() - hlsLoadTs < 4e3) {
|
|
638
|
+
return true;
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
hlsLoadAt = target;
|
|
642
|
+
hlsLoadTs = Date.now();
|
|
643
|
+
hlsResumeTarget = target;
|
|
644
|
+
try {
|
|
645
|
+
hls.startLoad(target);
|
|
646
|
+
} catch (event2) {
|
|
647
|
+
return false;
|
|
648
|
+
}
|
|
649
|
+
return true;
|
|
650
|
+
}, destroyStreamPlayers = function() {
|
|
651
|
+
clearSeekRetry();
|
|
652
|
+
seekApplyLock = false;
|
|
653
|
+
hlsStartPositionUsed = false;
|
|
654
|
+
hlsResumeTarget = -1;
|
|
655
|
+
hlsLoadAt = -1;
|
|
656
|
+
hlsLoadTs = 0;
|
|
657
|
+
decodeRecoverCount = 0;
|
|
658
|
+
if (hls) {
|
|
659
|
+
try {
|
|
660
|
+
hls.destroy();
|
|
661
|
+
} catch (event2) {
|
|
662
|
+
}
|
|
663
|
+
hls = null;
|
|
664
|
+
}
|
|
665
|
+
if (pugPlayer) {
|
|
666
|
+
try {
|
|
667
|
+
pugPlayer.pause();
|
|
668
|
+
pugPlayer.unload();
|
|
669
|
+
pugPlayer.detachMediaElement();
|
|
670
|
+
pugPlayer.destroy();
|
|
671
|
+
} catch (event2) {
|
|
672
|
+
}
|
|
673
|
+
pugPlayer = null;
|
|
674
|
+
}
|
|
563
675
|
}, changeVideo = function(vstr) {
|
|
564
676
|
var i2 = 0;
|
|
565
677
|
ensureAutoPlug(vstr);
|
|
678
|
+
prepareCookieAndSeek();
|
|
679
|
+
destroyStreamPlayers();
|
|
566
680
|
if (video.attr("src") || video.htm()) {
|
|
567
681
|
player.pause();
|
|
568
682
|
}
|
|
@@ -647,46 +761,6 @@ var require_ckplayer = __commonJS({
|
|
|
647
761
|
if (isChangeDef) {
|
|
648
762
|
checkDefinition();
|
|
649
763
|
}
|
|
650
|
-
if (vars["cookie"]) {
|
|
651
|
-
if (valType(vars["cookie"]) == "array" && vars["cookie"].length >= 2) {
|
|
652
|
-
if (vars["cookie"][0] && valType(vars["cookie"][0]) == "string") {
|
|
653
|
-
cookieName = vars["cookie"][0];
|
|
654
|
-
}
|
|
655
|
-
if (vars["cookie"][1] && valType(vars["cookie"][1]) == "number") {
|
|
656
|
-
cookieTime = vars["cookie"][1];
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
if (valType(vars["cookie"]) == "object" && !isUndefined(vars["cookie"]["name"])) {
|
|
660
|
-
cookieName = vars["cookie"]["name"];
|
|
661
|
-
if (!isUndefined(vars["cookie"]["hour"]) && valType(vars["cookie"]["hour"]) == "number") {
|
|
662
|
-
cookieTime = vars["cookie"]["hour"];
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
if (valType(vars["cookie"]) == "string") {
|
|
666
|
-
cookieName = vars["cookie"];
|
|
667
|
-
}
|
|
668
|
-
if (cookieName) {
|
|
669
|
-
cookieName = cookieName.replace(/[ ]*,[ ]*|[ ]+/g, "").replace(/[ ]*;[ ]*|[ ]+/g, "");
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
if (!isUndefined(vars["seek"]) && !seekTime) {
|
|
673
|
-
if (valType(vars["seek"]) == "number" && vars["seek"] > 0) {
|
|
674
|
-
seekTime = vars["seek"];
|
|
675
|
-
} else if (valType(vars["seek"]) == "string" && vars["seek"] == "cookie" && cookieName) {
|
|
676
|
-
var cke = player.cookie(cookieName);
|
|
677
|
-
if (cke) {
|
|
678
|
-
seekTime = cke["time"];
|
|
679
|
-
}
|
|
680
|
-
} else if (valType(vars["seek"]) == "string" && vars["seek"] !== "" && !isNaN(parseFloat(vars["seek"]))) {
|
|
681
|
-
seekTime = parseFloat(vars["seek"]);
|
|
682
|
-
}
|
|
683
|
-
if (seekTime && seekTime > 0) {
|
|
684
|
-
maxSeeTime = Math.max(maxSeeTime, seekTime);
|
|
685
|
-
if (firstSeekTime < 0) {
|
|
686
|
-
firstSeekTime = seekTime;
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
764
|
}, plugPlayer = function(url) {
|
|
691
765
|
switch (vars["plug"]) {
|
|
692
766
|
case "hls.js":
|
|
@@ -716,13 +790,31 @@ var require_ckplayer = __commonJS({
|
|
|
716
790
|
}, hlsPlayer = function(url) {
|
|
717
791
|
var startHls = function() {
|
|
718
792
|
if (typeof Hls !== "undefined" && !isUndefined(Hls) && Hls.isSupported()) {
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
793
|
+
if (hls) {
|
|
794
|
+
try {
|
|
795
|
+
hls.destroy();
|
|
796
|
+
} catch (event2) {
|
|
797
|
+
}
|
|
798
|
+
hls = null;
|
|
799
|
+
}
|
|
800
|
+
var hlsConf = {
|
|
801
|
+
// 10s 分片流在续播点附近需要略大缓冲,减少卡住转圈
|
|
802
|
+
maxBufferLength: 30,
|
|
803
|
+
maxMaxBufferLength: 60
|
|
804
|
+
};
|
|
805
|
+
var resumeAt = seekTime;
|
|
806
|
+
if (!resumeAt) {
|
|
807
|
+
resumeAt = parseResumeSeekFromVars();
|
|
808
|
+
}
|
|
809
|
+
if (resumeAt && resumeAt > 0 && (isUndefined(vars["live"]) || !vars["live"])) {
|
|
810
|
+
hlsConf.startPosition = resumeAt;
|
|
811
|
+
maxSeeTime = Math.max(maxSeeTime, resumeAt);
|
|
723
812
|
if (firstSeekTime < 0) {
|
|
724
|
-
firstSeekTime =
|
|
813
|
+
firstSeekTime = resumeAt;
|
|
725
814
|
}
|
|
815
|
+
hlsResumeTarget = resumeAt;
|
|
816
|
+
hlsLoadAt = resumeAt;
|
|
817
|
+
hlsLoadTs = Date.now();
|
|
726
818
|
seekTime = 0;
|
|
727
819
|
hlsStartPositionUsed = true;
|
|
728
820
|
clearSeekRetry();
|
|
@@ -735,6 +827,21 @@ var require_ckplayer = __commonJS({
|
|
|
735
827
|
applyPendingSeek();
|
|
736
828
|
}
|
|
737
829
|
});
|
|
830
|
+
hls.on(Hls.Events.FRAG_BUFFERED, function(event2, data) {
|
|
831
|
+
if (hlsResumeTarget <= 0 || !data || !data.frag) {
|
|
832
|
+
return;
|
|
833
|
+
}
|
|
834
|
+
var fragStart = data.frag.start;
|
|
835
|
+
var fragEnd = fragStart + data.frag.duration;
|
|
836
|
+
if (hlsResumeTarget >= fragStart - 0.5 && hlsResumeTarget <= fragEnd + 0.5) {
|
|
837
|
+
if (!waited) {
|
|
838
|
+
waited = true;
|
|
839
|
+
if (C["buffer"]) {
|
|
840
|
+
C["buffer"].hide();
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
});
|
|
738
845
|
hls.on(Hls.Events.ERROR, function(event2, data) {
|
|
739
846
|
var code = 9;
|
|
740
847
|
var message2 = language["error"]["loadingFailed"];
|
|
@@ -1476,17 +1583,22 @@ var require_ckplayer = __commonJS({
|
|
|
1476
1583
|
clearSeekRetry();
|
|
1477
1584
|
return;
|
|
1478
1585
|
}
|
|
1586
|
+
if (t > 0) {
|
|
1587
|
+
maxSeeTime = Math.max(maxSeeTime, t);
|
|
1588
|
+
if (firstSeekTime < 0) {
|
|
1589
|
+
firstSeekTime = t;
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
if (hlsSeekTo(t, !!force)) {
|
|
1593
|
+
clearSeekRetry();
|
|
1594
|
+
seekTime = 0;
|
|
1595
|
+
return;
|
|
1596
|
+
}
|
|
1479
1597
|
var readyEnough = !isUndefined(video.readyState) && video.readyState >= 2;
|
|
1480
1598
|
var bufferedOk = timeInBuffered(t);
|
|
1481
1599
|
if (!force && !bufferedOk && (!readyEnough || video.readyState < 3)) {
|
|
1482
1600
|
seekRetryCount++;
|
|
1483
1601
|
if (seekRetryCount <= 50) {
|
|
1484
|
-
try {
|
|
1485
|
-
if (hls && typeof hls.startLoad === "function") {
|
|
1486
|
-
hls.startLoad(t);
|
|
1487
|
-
}
|
|
1488
|
-
} catch (event2) {
|
|
1489
|
-
}
|
|
1490
1602
|
if (seekRetryTimer) {
|
|
1491
1603
|
clearTimeout(seekRetryTimer);
|
|
1492
1604
|
}
|
|
@@ -1497,12 +1609,6 @@ var require_ckplayer = __commonJS({
|
|
|
1497
1609
|
}
|
|
1498
1610
|
}
|
|
1499
1611
|
clearSeekRetry();
|
|
1500
|
-
if (t > 0) {
|
|
1501
|
-
maxSeeTime = Math.max(maxSeeTime, t);
|
|
1502
|
-
if (firstSeekTime < 0) {
|
|
1503
|
-
firstSeekTime = t;
|
|
1504
|
-
}
|
|
1505
|
-
}
|
|
1506
1612
|
seekApplyLock = true;
|
|
1507
1613
|
seekTime = 0;
|
|
1508
1614
|
try {
|
|
@@ -2166,7 +2272,8 @@ var require_ckplayer = __commonJS({
|
|
|
2166
2272
|
ad["frontPlay"] = false;
|
|
2167
2273
|
C["ad"].hide();
|
|
2168
2274
|
allBarShow();
|
|
2169
|
-
seekTime =
|
|
2275
|
+
seekTime = 0;
|
|
2276
|
+
applyResumeSeekState(parseResumeSeekFromVars());
|
|
2170
2277
|
if (ad["front"]["video"]) {
|
|
2171
2278
|
changeVideo(vars["video"]);
|
|
2172
2279
|
} else {
|
|
@@ -2751,11 +2858,15 @@ var require_ckplayer = __commonJS({
|
|
|
2751
2858
|
if (vars["timeScheduleAdjust"] == 5 && target > maxSeeTime && seekTime && Math.abs(seekTime - target) < 0.5) {
|
|
2752
2859
|
maxSeeTime = Math.max(maxSeeTime, target);
|
|
2753
2860
|
}
|
|
2754
|
-
if (target > 0.5 && !timeInBuffered(target) && video.readyState < 3) {
|
|
2861
|
+
if (target > 0.5 && !timeInBuffered(target) && video.readyState < 3 && !hls) {
|
|
2755
2862
|
seekTime = target;
|
|
2756
2863
|
applyPendingSeek(false);
|
|
2757
2864
|
return player;
|
|
2758
2865
|
}
|
|
2866
|
+
if (hlsSeekTo(target, false)) {
|
|
2867
|
+
seekTime = 0;
|
|
2868
|
+
return player;
|
|
2869
|
+
}
|
|
2759
2870
|
try {
|
|
2760
2871
|
video.currentTime = target;
|
|
2761
2872
|
seekTime = 0;
|
|
@@ -5970,7 +6081,7 @@ var require_ckplayer = __commonJS({
|
|
|
5970
6081
|
if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
|
|
5971
6082
|
var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
5972
6083
|
var m2 = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
|
|
5973
|
-
if (cdn && cdn.indexOf("1.0.
|
|
6084
|
+
if (cdn && cdn.indexOf("1.0.8") === -1 && m2) {
|
|
5974
6085
|
if (cdn.slice(-1) !== "/") {
|
|
5975
6086
|
cdn += "/";
|
|
5976
6087
|
}
|
|
@@ -6774,6 +6885,9 @@ function buildPlayerConfig(input) {
|
|
|
6774
6885
|
if (input.pluginPath) {
|
|
6775
6886
|
config.pluginPath = input.pluginPath;
|
|
6776
6887
|
}
|
|
6888
|
+
if (input.seek != null && input.seek !== "" && !isNaN(parseFloat(input.seek)) && parseFloat(input.seek) > 0) {
|
|
6889
|
+
config.seek = parseFloat(input.seek);
|
|
6890
|
+
}
|
|
6777
6891
|
for (var key in opts) {
|
|
6778
6892
|
if (Object.prototype.hasOwnProperty.call(opts, key) && key !== "container") {
|
|
6779
6893
|
config[key] = opts[key];
|