ckplayer-plus 1.1.0 → 1.1.1
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 +186 -53
- package/dist/ckplayer.min.js +2 -2
- package/dist/index.cjs +150 -51
- package/dist/index.js +150 -51
- package/dist/react.cjs +154 -54
- package/dist/react.js +154 -54
- package/dist/vue.cjs +157 -55
- package/dist/vue.js +157 -55
- package/package.json +1 -1
- package/types/vue.d.ts +1 -1
package/dist/vue.cjs
CHANGED
|
@@ -125,8 +125,8 @@ var require_ckplayer = __commonJS({
|
|
|
125
125
|
//默认需要跳转的秒数
|
|
126
126
|
next: null,
|
|
127
127
|
//下一集按钮动作
|
|
128
|
-
loaded:
|
|
129
|
-
|
|
128
|
+
loaded: null,
|
|
129
|
+
//加载播放器后调用的函数(仅支持 function)
|
|
130
130
|
plug: "",
|
|
131
131
|
//使用插件
|
|
132
132
|
duration: 0,
|
|
@@ -210,7 +210,7 @@ var require_ckplayer = __commonJS({
|
|
|
210
210
|
cdnFallback: true
|
|
211
211
|
// getPath 失败时是否回退到 jsDelivr(内网可设 false,并配置 pluginPath)
|
|
212
212
|
};
|
|
213
|
-
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.1.
|
|
213
|
+
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.1.1/dist/";
|
|
214
214
|
function ckplayerEmbed(videoObj) {
|
|
215
215
|
var rightMenu = [
|
|
216
216
|
{
|
|
@@ -238,9 +238,11 @@ var require_ckplayer = __commonJS({
|
|
|
238
238
|
var seekRetryTimer = null;
|
|
239
239
|
var seekRetryCount = 0;
|
|
240
240
|
var seekApplyLock = false;
|
|
241
|
+
var autoplayPending = false;
|
|
241
242
|
var decodeRecoverCount = 0;
|
|
242
243
|
var hlsStartPositionUsed = false;
|
|
243
244
|
var hlsResumeTarget = -1;
|
|
245
|
+
var hlsResumeWarmup = false;
|
|
244
246
|
var hlsLoadAt = -1;
|
|
245
247
|
var hlsLoadTs = 0;
|
|
246
248
|
var oldTime = 0, playTime = 0, firstSeekTime = -1, maxSeeTime = 0;
|
|
@@ -430,7 +432,7 @@ var require_ckplayer = __commonJS({
|
|
|
430
432
|
}
|
|
431
433
|
var allowCdn = !vars || vars["cdnFallback"] !== false;
|
|
432
434
|
var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
433
|
-
if (!allowCdn || !cdn || cdn.indexOf("1.1.
|
|
435
|
+
if (!allowCdn || !cdn || cdn.indexOf("1.1.1") > -1) {
|
|
434
436
|
return folder + "/" + file;
|
|
435
437
|
}
|
|
436
438
|
if (cdn.slice(-1) !== "/") {
|
|
@@ -524,8 +526,8 @@ var require_ckplayer = __commonJS({
|
|
|
524
526
|
player.volume(0);
|
|
525
527
|
player.muted();
|
|
526
528
|
recoveryVolume = true;
|
|
527
|
-
video.attr("
|
|
528
|
-
|
|
529
|
+
video.attr("preload", "auto");
|
|
530
|
+
autoplayPending = true;
|
|
529
531
|
} else {
|
|
530
532
|
video.attr("preload", "metadata");
|
|
531
533
|
}
|
|
@@ -677,6 +679,7 @@ var require_ckplayer = __commonJS({
|
|
|
677
679
|
seekApplyLock = false;
|
|
678
680
|
hlsStartPositionUsed = false;
|
|
679
681
|
hlsResumeTarget = -1;
|
|
682
|
+
hlsResumeWarmup = false;
|
|
680
683
|
hlsLoadAt = -1;
|
|
681
684
|
hlsLoadTs = 0;
|
|
682
685
|
decodeRecoverCount = 0;
|
|
@@ -832,27 +835,38 @@ var require_ckplayer = __commonJS({
|
|
|
832
835
|
resumeAt = parseResumeSeekFromVars();
|
|
833
836
|
}
|
|
834
837
|
if (resumeAt && resumeAt > 0 && (isUndefined(vars["live"]) || !vars["live"])) {
|
|
835
|
-
hlsConf.startPosition = resumeAt;
|
|
836
838
|
maxSeeTime = Math.max(maxSeeTime, resumeAt);
|
|
837
839
|
if (firstSeekTime < 0) {
|
|
838
840
|
firstSeekTime = resumeAt;
|
|
839
841
|
}
|
|
842
|
+
seekTime = resumeAt;
|
|
840
843
|
hlsResumeTarget = resumeAt;
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
seekTime = 0;
|
|
844
|
-
hlsStartPositionUsed = true;
|
|
845
|
-
clearSeekRetry();
|
|
844
|
+
hlsResumeWarmup = true;
|
|
845
|
+
hlsConf.startPosition = hlsPriorLoadTime(resumeAt);
|
|
846
846
|
}
|
|
847
847
|
hls = new Hls(hlsConf);
|
|
848
848
|
hls.loadSource(url);
|
|
849
849
|
hls.attachMedia(video);
|
|
850
850
|
hls.on(Hls.Events.MANIFEST_PARSED, function() {
|
|
851
|
+
if (hlsResumeWarmup && seekTime > 0) {
|
|
852
|
+
try {
|
|
853
|
+
hls.startLoad(hlsPriorLoadTime(seekTime));
|
|
854
|
+
} catch (event2) {
|
|
855
|
+
}
|
|
856
|
+
return;
|
|
857
|
+
}
|
|
851
858
|
if (!hlsStartPositionUsed) {
|
|
852
859
|
applyPendingSeek();
|
|
853
860
|
}
|
|
854
861
|
});
|
|
855
862
|
hls.on(Hls.Events.FRAG_BUFFERED, function(event2, data) {
|
|
863
|
+
if (hlsResumeWarmup && seekTime > 0) {
|
|
864
|
+
if (hlsCanSafelySeekTo(seekTime)) {
|
|
865
|
+
hlsResumeWarmup = false;
|
|
866
|
+
applySeekToMedia(seekTime);
|
|
867
|
+
}
|
|
868
|
+
return;
|
|
869
|
+
}
|
|
856
870
|
if (hlsResumeTarget <= 0 || !data || !data.frag) {
|
|
857
871
|
return;
|
|
858
872
|
}
|
|
@@ -1585,12 +1599,53 @@ var require_ckplayer = __commonJS({
|
|
|
1585
1599
|
} catch (event2) {
|
|
1586
1600
|
}
|
|
1587
1601
|
return false;
|
|
1602
|
+
}, hlsPriorLoadTime = function(t) {
|
|
1603
|
+
if (isNaN(t) || t <= 0) {
|
|
1604
|
+
return 0;
|
|
1605
|
+
}
|
|
1606
|
+
return Math.max(0, t - 12);
|
|
1607
|
+
}, hlsCanSafelySeekTo = function(t) {
|
|
1608
|
+
if (!video || isUndefined(video.buffered) || isNaN(t) || t < 0) {
|
|
1609
|
+
return false;
|
|
1610
|
+
}
|
|
1611
|
+
try {
|
|
1612
|
+
var buf = video.buffered;
|
|
1613
|
+
var needFrom = hlsPriorLoadTime(t);
|
|
1614
|
+
for (var i = 0; i < buf.length; i++) {
|
|
1615
|
+
var start = buf.start(i);
|
|
1616
|
+
var end = buf.end(i);
|
|
1617
|
+
if (t <= end + 0.15 && needFrom >= start - 0.35) {
|
|
1618
|
+
return true;
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
} catch (event2) {
|
|
1622
|
+
}
|
|
1623
|
+
return false;
|
|
1588
1624
|
}, clearSeekRetry = function() {
|
|
1589
1625
|
if (seekRetryTimer) {
|
|
1590
1626
|
clearTimeout(seekRetryTimer);
|
|
1591
1627
|
seekRetryTimer = null;
|
|
1592
1628
|
}
|
|
1593
1629
|
seekRetryCount = 0;
|
|
1630
|
+
}, startPendingAutoplay = function() {
|
|
1631
|
+
if (!autoplayPending || !video || !vars["autoplay"] || seekTime || seekApplyLock || loadedmetadataNum < 1) {
|
|
1632
|
+
return;
|
|
1633
|
+
}
|
|
1634
|
+
autoplayPending = false;
|
|
1635
|
+
player.play();
|
|
1636
|
+
}, applySeekToMedia = function(t) {
|
|
1637
|
+
clearSeekRetry();
|
|
1638
|
+
seekApplyLock = true;
|
|
1639
|
+
seekTime = 0;
|
|
1640
|
+
try {
|
|
1641
|
+
video.currentTime = t;
|
|
1642
|
+
} catch (event2) {
|
|
1643
|
+
seekTime = t;
|
|
1644
|
+
seekApplyLock = false;
|
|
1645
|
+
}
|
|
1646
|
+
setTimeout(function() {
|
|
1647
|
+
seekApplyLock = false;
|
|
1648
|
+
}, 800);
|
|
1594
1649
|
}, applyPendingSeek = function(force) {
|
|
1595
1650
|
if (!seekTime || !video || seekApplyLock) {
|
|
1596
1651
|
return;
|
|
@@ -1614,14 +1669,39 @@ var require_ckplayer = __commonJS({
|
|
|
1614
1669
|
firstSeekTime = t;
|
|
1615
1670
|
}
|
|
1616
1671
|
}
|
|
1617
|
-
if (
|
|
1618
|
-
|
|
1619
|
-
|
|
1672
|
+
if (hlsResumeWarmup) {
|
|
1673
|
+
if (hlsCanSafelySeekTo(t)) {
|
|
1674
|
+
hlsResumeWarmup = false;
|
|
1675
|
+
applySeekToMedia(t);
|
|
1676
|
+
}
|
|
1620
1677
|
return;
|
|
1621
1678
|
}
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1679
|
+
if (hls && typeof hls.startLoad === "function") {
|
|
1680
|
+
if (!hlsCanSafelySeekTo(t) && t > 1) {
|
|
1681
|
+
hlsResumeWarmup = true;
|
|
1682
|
+
hlsResumeTarget = t;
|
|
1683
|
+
try {
|
|
1684
|
+
hls.startLoad(hlsPriorLoadTime(t));
|
|
1685
|
+
} catch (event2) {
|
|
1686
|
+
}
|
|
1687
|
+
seekRetryCount++;
|
|
1688
|
+
if (seekRetryCount <= 50) {
|
|
1689
|
+
if (seekRetryTimer) {
|
|
1690
|
+
clearTimeout(seekRetryTimer);
|
|
1691
|
+
}
|
|
1692
|
+
seekRetryTimer = setTimeout(function() {
|
|
1693
|
+
applyPendingSeek(false);
|
|
1694
|
+
}, 200);
|
|
1695
|
+
}
|
|
1696
|
+
return;
|
|
1697
|
+
}
|
|
1698
|
+
if (hlsSeekTo(t, !!force)) {
|
|
1699
|
+
clearSeekRetry();
|
|
1700
|
+
seekTime = 0;
|
|
1701
|
+
return;
|
|
1702
|
+
}
|
|
1703
|
+
}
|
|
1704
|
+
if (!force && (!isUndefined(video.readyState) && video.readyState < 1)) {
|
|
1625
1705
|
seekRetryCount++;
|
|
1626
1706
|
if (seekRetryCount <= 50) {
|
|
1627
1707
|
if (seekRetryTimer) {
|
|
@@ -1633,45 +1713,54 @@ var require_ckplayer = __commonJS({
|
|
|
1633
1713
|
return;
|
|
1634
1714
|
}
|
|
1635
1715
|
}
|
|
1636
|
-
|
|
1637
|
-
seekApplyLock = true;
|
|
1638
|
-
seekTime = 0;
|
|
1639
|
-
try {
|
|
1640
|
-
video.currentTime = t;
|
|
1641
|
-
} catch (event2) {
|
|
1642
|
-
seekTime = t;
|
|
1643
|
-
seekApplyLock = false;
|
|
1644
|
-
}
|
|
1645
|
-
setTimeout(function() {
|
|
1646
|
-
seekApplyLock = false;
|
|
1647
|
-
}, 800);
|
|
1716
|
+
applySeekToMedia(t);
|
|
1648
1717
|
}, recoverDecodeError = function() {
|
|
1649
|
-
if (decodeRecoverCount >=
|
|
1718
|
+
if (decodeRecoverCount >= 3) {
|
|
1650
1719
|
return false;
|
|
1651
1720
|
}
|
|
1652
1721
|
decodeRecoverCount++;
|
|
1653
|
-
var resumeAt = playTime > 0 ? playTime : vars["seek"] ? parseFloat(vars["seek"]) : 0;
|
|
1722
|
+
var resumeAt = hlsResumeTarget > 0 ? hlsResumeTarget : playTime > 0 ? playTime : vars["seek"] ? parseFloat(vars["seek"]) : 0;
|
|
1654
1723
|
if (isNaN(resumeAt) || resumeAt < 0) {
|
|
1655
1724
|
resumeAt = 0;
|
|
1656
1725
|
}
|
|
1726
|
+
var loadFrom = Math.max(0, resumeAt - 12 * decodeRecoverCount);
|
|
1727
|
+
seekApplyLock = false;
|
|
1728
|
+
clearSeekRetry();
|
|
1657
1729
|
try {
|
|
1658
1730
|
if (hls && typeof hls.recoverMediaError === "function") {
|
|
1659
1731
|
hls.recoverMediaError();
|
|
1660
|
-
if (resumeAt > 0) {
|
|
1661
|
-
seekTime = resumeAt;
|
|
1662
|
-
seekApplyLock = false;
|
|
1663
|
-
setTimeout(function() {
|
|
1664
|
-
applyPendingSeek(true);
|
|
1665
|
-
}, 300);
|
|
1666
|
-
}
|
|
1667
|
-
return true;
|
|
1668
1732
|
}
|
|
1669
1733
|
} catch (event2) {
|
|
1670
1734
|
}
|
|
1735
|
+
if (resumeAt > 0 && hls && typeof hls.startLoad === "function") {
|
|
1736
|
+
seekTime = resumeAt;
|
|
1737
|
+
hlsResumeTarget = resumeAt;
|
|
1738
|
+
hlsResumeWarmup = true;
|
|
1739
|
+
hlsLoadAt = -1;
|
|
1740
|
+
hlsLoadTs = 0;
|
|
1741
|
+
try {
|
|
1742
|
+
hls.startLoad(loadFrom);
|
|
1743
|
+
} catch (event2) {
|
|
1744
|
+
}
|
|
1745
|
+
setTimeout(function() {
|
|
1746
|
+
if (hlsCanSafelySeekTo(resumeAt)) {
|
|
1747
|
+
hlsResumeWarmup = false;
|
|
1748
|
+
applySeekToMedia(resumeAt);
|
|
1749
|
+
if (video && video.paused && vars["autoplay"]) {
|
|
1750
|
+
try {
|
|
1751
|
+
video.play();
|
|
1752
|
+
} catch (e2) {
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
} else {
|
|
1756
|
+
applyPendingSeek(false);
|
|
1757
|
+
}
|
|
1758
|
+
}, 500);
|
|
1759
|
+
return true;
|
|
1760
|
+
}
|
|
1671
1761
|
try {
|
|
1672
1762
|
var soft = Math.max(0, resumeAt - 1.5);
|
|
1673
1763
|
seekTime = resumeAt;
|
|
1674
|
-
seekApplyLock = false;
|
|
1675
1764
|
if (video) {
|
|
1676
1765
|
video.currentTime = soft;
|
|
1677
1766
|
}
|
|
@@ -1730,6 +1819,7 @@ var require_ckplayer = __commonJS({
|
|
|
1730
1819
|
C["loading"].hide();
|
|
1731
1820
|
eventTarget("canplay");
|
|
1732
1821
|
applyPendingSeek();
|
|
1822
|
+
startPendingAutoplay();
|
|
1733
1823
|
},
|
|
1734
1824
|
loadedData: function() {
|
|
1735
1825
|
eventTarget("loadeddata");
|
|
@@ -1782,6 +1872,7 @@ var require_ckplayer = __commonJS({
|
|
|
1782
1872
|
}
|
|
1783
1873
|
pSliderMouseDown = false;
|
|
1784
1874
|
loadedmetadataNum++;
|
|
1875
|
+
startPendingAutoplay();
|
|
1785
1876
|
if (!isUndefined(ad) && !isUndefined(ad["frontPlay"]) && ad["frontPlay"] && loadedmetadataNum > 1) {
|
|
1786
1877
|
player.play();
|
|
1787
1878
|
calculationAdFrontTime(duration);
|
|
@@ -1865,8 +1956,6 @@ var require_ckplayer = __commonJS({
|
|
|
1865
1956
|
msg = errorInfo.message;
|
|
1866
1957
|
}
|
|
1867
1958
|
if (code === 3 && recoverDecodeError()) {
|
|
1868
|
-
CT.error = { code, message: msg };
|
|
1869
|
-
eventTarget("error", CT.error);
|
|
1870
1959
|
return;
|
|
1871
1960
|
}
|
|
1872
1961
|
CT.error = { code, message: msg };
|
|
@@ -1906,8 +1995,6 @@ var require_ckplayer = __commonJS({
|
|
|
1906
1995
|
},
|
|
1907
1996
|
stalled: function() {
|
|
1908
1997
|
eventTarget("stalled");
|
|
1909
|
-
CT.error = { code: 13, message: "load:stalled" };
|
|
1910
|
-
eventTarget("error", CT.error);
|
|
1911
1998
|
},
|
|
1912
1999
|
suspend: function() {
|
|
1913
2000
|
eventTarget("suspend");
|
|
@@ -1920,9 +2007,7 @@ var require_ckplayer = __commonJS({
|
|
|
1920
2007
|
seeked: function() {
|
|
1921
2008
|
seekApplyLock = false;
|
|
1922
2009
|
decodeRecoverCount = 0;
|
|
1923
|
-
|
|
1924
|
-
player.play();
|
|
1925
|
-
}
|
|
2010
|
+
startPendingAutoplay();
|
|
1926
2011
|
pSliderMouseDown = false;
|
|
1927
2012
|
eventTarget("seek", { time: this.currentTime, state: "seeked" });
|
|
1928
2013
|
eventTarget("seeked");
|
|
@@ -2699,9 +2784,12 @@ var require_ckplayer = __commonJS({
|
|
|
2699
2784
|
} else {
|
|
2700
2785
|
if (loadedmetadataNum > 0 && video) {
|
|
2701
2786
|
try {
|
|
2702
|
-
video.play();
|
|
2787
|
+
var playPromise = video.play();
|
|
2788
|
+
if (playPromise && typeof playPromise.catch === "function") {
|
|
2789
|
+
playPromise.catch(function() {
|
|
2790
|
+
});
|
|
2791
|
+
}
|
|
2703
2792
|
} catch (event2) {
|
|
2704
|
-
console.error(event2);
|
|
2705
2793
|
}
|
|
2706
2794
|
}
|
|
2707
2795
|
}
|
|
@@ -2888,6 +2976,17 @@ var require_ckplayer = __commonJS({
|
|
|
2888
2976
|
applyPendingSeek(false);
|
|
2889
2977
|
return player;
|
|
2890
2978
|
}
|
|
2979
|
+
if (hls && target > 1 && !hlsCanSafelySeekTo(target)) {
|
|
2980
|
+
seekTime = target;
|
|
2981
|
+
hlsResumeWarmup = true;
|
|
2982
|
+
hlsResumeTarget = target;
|
|
2983
|
+
try {
|
|
2984
|
+
hls.startLoad(hlsPriorLoadTime(target));
|
|
2985
|
+
} catch (event2) {
|
|
2986
|
+
}
|
|
2987
|
+
applyPendingSeek(false);
|
|
2988
|
+
return player;
|
|
2989
|
+
}
|
|
2891
2990
|
if (hlsSeekTo(target, false)) {
|
|
2892
2991
|
seekTime = 0;
|
|
2893
2992
|
return player;
|
|
@@ -6106,7 +6205,7 @@ var require_ckplayer = __commonJS({
|
|
|
6106
6205
|
if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
|
|
6107
6206
|
var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
6108
6207
|
var m = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
|
|
6109
|
-
if (cdn && cdn.indexOf("1.1.
|
|
6208
|
+
if (cdn && cdn.indexOf("1.1.1") === -1 && m) {
|
|
6110
6209
|
if (cdn.slice(-1) !== "/") {
|
|
6111
6210
|
cdn += "/";
|
|
6112
6211
|
}
|
|
@@ -6913,15 +7012,16 @@ function buildPlayerConfig(input) {
|
|
|
6913
7012
|
if (input.pluginPath) {
|
|
6914
7013
|
config.pluginPath = input.pluginPath;
|
|
6915
7014
|
}
|
|
6916
|
-
|
|
7015
|
+
var hasSeekProp = input.seek != null && input.seek !== "" && !isNaN(parseFloat(input.seek)) && parseFloat(input.seek) > 0;
|
|
7016
|
+
if (hasSeekProp) {
|
|
6917
7017
|
config.seek = parseFloat(input.seek);
|
|
6918
7018
|
}
|
|
6919
7019
|
for (var key in opts) {
|
|
6920
|
-
if (Object.prototype.hasOwnProperty.call(opts, key) && key !== "container") {
|
|
7020
|
+
if (Object.prototype.hasOwnProperty.call(opts, key) && key !== "container" && !(key === "seek" && hasSeekProp)) {
|
|
6921
7021
|
config[key] = opts[key];
|
|
6922
7022
|
}
|
|
6923
7023
|
}
|
|
6924
|
-
if (typeof config.loaded
|
|
7024
|
+
if (config.loaded != null && typeof config.loaded !== "function") {
|
|
6925
7025
|
delete config.loaded;
|
|
6926
7026
|
}
|
|
6927
7027
|
return config;
|
|
@@ -7054,7 +7154,9 @@ var CkPlayer = {
|
|
|
7054
7154
|
pause: function() {
|
|
7055
7155
|
if (this.player) this.player.pause();
|
|
7056
7156
|
},
|
|
7057
|
-
seek
|
|
7157
|
+
// `seek` is a prop, so it cannot also be an Options API method in Vue 3.
|
|
7158
|
+
// Call getPlayer().seek(time) for the underlying-player API.
|
|
7159
|
+
seekTo: function(time) {
|
|
7058
7160
|
if (!this.player) return;
|
|
7059
7161
|
var t = typeof time === "string" ? parseFloat(time) : time;
|
|
7060
7162
|
if (!isNaN(t)) this.player.seek(t);
|