ckplayer-plus 1.0.0 → 1.0.2
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.css +7 -7
- package/dist/ckplayer.ixigua.css +7 -7
- package/dist/ckplayer.js +143 -46
- package/dist/ckplayer.min.js +2 -2
- package/dist/ckplayer.red.css +7 -7
- package/dist/index.cjs +140 -46
- package/dist/index.js +140 -46
- package/dist/react.cjs +143 -47
- package/dist/react.js +143 -47
- package/dist/vue.cjs +143 -47
- package/dist/vue.js +143 -47
- package/package.json +2 -1
- package/types/index.d.ts +10 -1
package/dist/vue.cjs
CHANGED
|
@@ -205,10 +205,14 @@ var require_ckplayer = __commonJS({
|
|
|
205
205
|
//是否显示错误信息
|
|
206
206
|
pluginPath: "",
|
|
207
207
|
//插件与语言包根路径(bundler 下建议配置或设置 window.ckplayerBasePath)
|
|
208
|
-
autoPlug: true
|
|
208
|
+
autoPlug: true,
|
|
209
209
|
//未指定 plug 时,根据视频地址后缀自动选择 hls.js / flv.js / mpegts.js
|
|
210
|
+
preferBuiltinPlug: true,
|
|
211
|
+
//优先加载本包内置插件脚本,避免复用页面上其它版本的全局 Hls/flvjs/mpegts
|
|
212
|
+
cdnFallback: true
|
|
213
|
+
// getPath 失败时是否回退到 jsDelivr(内网可设 false,并配置 pluginPath)
|
|
210
214
|
};
|
|
211
|
-
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@
|
|
215
|
+
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.2/dist/";
|
|
212
216
|
function ckplayerEmbed(videoObj) {
|
|
213
217
|
var rightMenu = [
|
|
214
218
|
{
|
|
@@ -388,7 +392,11 @@ var require_ckplayer = __commonJS({
|
|
|
388
392
|
if (fromScript && fromScript.indexOf(folder + "/") > -1 && fromScript.indexOf("undefined") === -1) {
|
|
389
393
|
return fromScript;
|
|
390
394
|
}
|
|
395
|
+
var allowCdn = !vars || vars["cdnFallback"] !== false;
|
|
391
396
|
var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
397
|
+
if (!allowCdn || !cdn || cdn.indexOf("1.0.2") > -1) {
|
|
398
|
+
return folder + "/" + file;
|
|
399
|
+
}
|
|
392
400
|
if (cdn.slice(-1) !== "/") {
|
|
393
401
|
cdn += "/";
|
|
394
402
|
}
|
|
@@ -656,12 +664,19 @@ var require_ckplayer = __commonJS({
|
|
|
656
664
|
if (!isUndefined(vars["seek"]) && !seekTime) {
|
|
657
665
|
if (valType(vars["seek"]) == "number" && vars["seek"] > 0) {
|
|
658
666
|
seekTime = vars["seek"];
|
|
659
|
-
}
|
|
660
|
-
if (valType(vars["seek"]) == "string" && vars["seek"] == "cookie" && cookieName) {
|
|
667
|
+
} else if (valType(vars["seek"]) == "string" && vars["seek"] == "cookie" && cookieName) {
|
|
661
668
|
var cke = player.cookie(cookieName);
|
|
662
669
|
if (cke) {
|
|
663
670
|
seekTime = cke["time"];
|
|
664
671
|
}
|
|
672
|
+
} else if (valType(vars["seek"]) == "string" && vars["seek"] !== "" && !isNaN(parseFloat(vars["seek"]))) {
|
|
673
|
+
seekTime = parseFloat(vars["seek"]);
|
|
674
|
+
}
|
|
675
|
+
if (seekTime && seekTime > 0) {
|
|
676
|
+
maxSeeTime = Math.max(maxSeeTime, seekTime);
|
|
677
|
+
if (firstSeekTime < 0) {
|
|
678
|
+
firstSeekTime = seekTime;
|
|
679
|
+
}
|
|
665
680
|
}
|
|
666
681
|
}
|
|
667
682
|
}, plugPlayer = function(url) {
|
|
@@ -696,6 +711,9 @@ var require_ckplayer = __commonJS({
|
|
|
696
711
|
hls = new Hls();
|
|
697
712
|
hls.loadSource(url);
|
|
698
713
|
hls.attachMedia(video);
|
|
714
|
+
hls.on(Hls.Events.MANIFEST_PARSED, function() {
|
|
715
|
+
applyPendingSeek();
|
|
716
|
+
});
|
|
699
717
|
hls.on(Hls.Events.ERROR, function(event2, data) {
|
|
700
718
|
var code = 9;
|
|
701
719
|
var message2 = language["error"]["loadingFailed"];
|
|
@@ -722,7 +740,7 @@ var require_ckplayer = __commonJS({
|
|
|
722
740
|
video.attr("src", url);
|
|
723
741
|
}
|
|
724
742
|
};
|
|
725
|
-
if (typeof Hls !== "undefined" && !isUndefined(Hls)) {
|
|
743
|
+
if (typeof Hls !== "undefined" && !isUndefined(Hls) && !vars["preferBuiltinPlug"]) {
|
|
726
744
|
startHls();
|
|
727
745
|
return;
|
|
728
746
|
}
|
|
@@ -760,7 +778,7 @@ var require_ckplayer = __commonJS({
|
|
|
760
778
|
});
|
|
761
779
|
}
|
|
762
780
|
};
|
|
763
|
-
if (typeof flvjs !== "undefined" && !isUndefined(flvjs)) {
|
|
781
|
+
if (typeof flvjs !== "undefined" && !isUndefined(flvjs) && !vars["preferBuiltinPlug"]) {
|
|
764
782
|
startFlv();
|
|
765
783
|
return;
|
|
766
784
|
}
|
|
@@ -798,7 +816,7 @@ var require_ckplayer = __commonJS({
|
|
|
798
816
|
});
|
|
799
817
|
}
|
|
800
818
|
};
|
|
801
|
-
if (typeof mpegts !== "undefined" && !isUndefined(mpegts)) {
|
|
819
|
+
if (typeof mpegts !== "undefined" && !isUndefined(mpegts) && !vars["preferBuiltinPlug"]) {
|
|
802
820
|
startMpegts();
|
|
803
821
|
return;
|
|
804
822
|
}
|
|
@@ -1393,6 +1411,30 @@ var require_ckplayer = __commonJS({
|
|
|
1393
1411
|
checkTrack();
|
|
1394
1412
|
}
|
|
1395
1413
|
}
|
|
1414
|
+
}, applyPendingSeek = function() {
|
|
1415
|
+
if (!seekTime || !video) {
|
|
1416
|
+
return;
|
|
1417
|
+
}
|
|
1418
|
+
if (!isUndefined(vars["live"]) && (valType(vars["live"]) == "boolean" && vars["live"] || valType(vars["live"]) == "number")) {
|
|
1419
|
+
return;
|
|
1420
|
+
}
|
|
1421
|
+
var t = seekTime;
|
|
1422
|
+
var dur = duration || video.duration || 0;
|
|
1423
|
+
if (dur && isFinite(dur) && dur > 0 && t >= dur) {
|
|
1424
|
+
t = Math.max(0, dur - 0.3);
|
|
1425
|
+
}
|
|
1426
|
+
if (t > 0) {
|
|
1427
|
+
maxSeeTime = Math.max(maxSeeTime, t);
|
|
1428
|
+
if (firstSeekTime < 0) {
|
|
1429
|
+
firstSeekTime = t;
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
seekTime = 0;
|
|
1433
|
+
try {
|
|
1434
|
+
video.currentTime = t;
|
|
1435
|
+
} catch (event2) {
|
|
1436
|
+
seekTime = t;
|
|
1437
|
+
}
|
|
1396
1438
|
}, loadedMetaData = function() {
|
|
1397
1439
|
eventTarget("loadedMetaData", {
|
|
1398
1440
|
width: CK.getWidth(),
|
|
@@ -1434,6 +1476,7 @@ var require_ckplayer = __commonJS({
|
|
|
1434
1476
|
canPlay: function() {
|
|
1435
1477
|
C["loading"].hide();
|
|
1436
1478
|
eventTarget("canplay");
|
|
1479
|
+
applyPendingSeek();
|
|
1437
1480
|
},
|
|
1438
1481
|
loadedData: function() {
|
|
1439
1482
|
eventTarget("loadeddata");
|
|
@@ -1462,6 +1505,7 @@ var require_ckplayer = __commonJS({
|
|
|
1462
1505
|
if (CT.videoWidth || CT.videoHeight || duration) {
|
|
1463
1506
|
loadedMetaData();
|
|
1464
1507
|
}
|
|
1508
|
+
applyPendingSeek();
|
|
1465
1509
|
var len = 0;
|
|
1466
1510
|
if (!isUndefined(this.buffered)) {
|
|
1467
1511
|
len = this.buffered.length;
|
|
@@ -1517,6 +1561,7 @@ var require_ckplayer = __commonJS({
|
|
|
1517
1561
|
if (CT.videoWidth || CT.videoHeight || duration) {
|
|
1518
1562
|
loadedMetaData();
|
|
1519
1563
|
}
|
|
1564
|
+
applyPendingSeek();
|
|
1520
1565
|
}
|
|
1521
1566
|
oldTime = playTime;
|
|
1522
1567
|
playTime = this.currentTime;
|
|
@@ -1728,9 +1773,8 @@ var require_ckplayer = __commonJS({
|
|
|
1728
1773
|
}
|
|
1729
1774
|
}
|
|
1730
1775
|
}
|
|
1731
|
-
if (seekTime && (isUndefined(vars["live"]) || !isUndefined(vars["live"]) && valType(vars["live"]) == "boolean" && !vars["live"])
|
|
1732
|
-
|
|
1733
|
-
seekTime = 0;
|
|
1776
|
+
if (seekTime && (isUndefined(vars["live"]) || !isUndefined(vars["live"]) && valType(vars["live"]) == "boolean" && !vars["live"])) {
|
|
1777
|
+
applyPendingSeek();
|
|
1734
1778
|
}
|
|
1735
1779
|
},
|
|
1736
1780
|
pause: function() {
|
|
@@ -2496,52 +2540,102 @@ var require_ckplayer = __commonJS({
|
|
|
2496
2540
|
/*
|
|
2497
2541
|
* seek
|
|
2498
2542
|
* 功能:监听跳转/执行跳转操作
|
|
2499
|
-
* @fn为函数时则监听视频跳转动作,@fn
|
|
2543
|
+
* @fn为函数时则监听视频跳转动作,@fn为数字(或数字字符串)时执行跳转操作
|
|
2500
2544
|
*/
|
|
2501
2545
|
seek: function(fn2) {
|
|
2502
2546
|
if (!isUndefined(fn2)) {
|
|
2503
2547
|
if (valType(fn2) == "function") {
|
|
2504
2548
|
newEvent.addEventListener("seek", fn2);
|
|
2505
|
-
}
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
if (
|
|
2516
|
-
|
|
2517
|
-
return;
|
|
2549
|
+
} else {
|
|
2550
|
+
var target = null;
|
|
2551
|
+
if (valType(fn2) == "number" && !isNaN(fn2)) {
|
|
2552
|
+
target = fn2;
|
|
2553
|
+
} else if (valType(fn2) == "string" && fn2 !== "" && fn2 !== "cookie" && !isNaN(parseFloat(fn2))) {
|
|
2554
|
+
target = parseFloat(fn2);
|
|
2555
|
+
}
|
|
2556
|
+
if (target !== null && video) {
|
|
2557
|
+
if (target > 0 && (seekTime && Math.abs(seekTime - target) < 0.5 || vars["seek"] && parseFloat(vars["seek"]) > 0 && Math.abs(parseFloat(vars["seek"]) - target) < 0.5)) {
|
|
2558
|
+
maxSeeTime = Math.max(maxSeeTime, target);
|
|
2559
|
+
if (firstSeekTime < 0) {
|
|
2560
|
+
firstSeekTime = target;
|
|
2518
2561
|
}
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
message(language["timeScheduleAdjust"]["
|
|
2523
|
-
return;
|
|
2562
|
+
}
|
|
2563
|
+
switch (vars["timeScheduleAdjust"]) {
|
|
2564
|
+
case 0:
|
|
2565
|
+
message(language["timeScheduleAdjust"]["prohibit"]);
|
|
2566
|
+
return player;
|
|
2567
|
+
case 1:
|
|
2568
|
+
break;
|
|
2569
|
+
case 2:
|
|
2570
|
+
if (target < oldTime) {
|
|
2571
|
+
message(language["timeScheduleAdjust"]["prohibitBackOff"]);
|
|
2572
|
+
return player;
|
|
2573
|
+
}
|
|
2574
|
+
break;
|
|
2575
|
+
case 3:
|
|
2576
|
+
if (target > oldTime) {
|
|
2577
|
+
message(language["timeScheduleAdjust"]["prohibitForward"]);
|
|
2578
|
+
return player;
|
|
2579
|
+
}
|
|
2580
|
+
break;
|
|
2581
|
+
case 4:
|
|
2582
|
+
if (target < firstSeekTime) {
|
|
2583
|
+
waitingMessage = false;
|
|
2584
|
+
try {
|
|
2585
|
+
video.currentTime = firstSeekTime;
|
|
2586
|
+
} catch (event2) {
|
|
2587
|
+
}
|
|
2588
|
+
message(language["timeScheduleAdjust"]["prohibitLookBack"]);
|
|
2589
|
+
return player;
|
|
2590
|
+
}
|
|
2591
|
+
break;
|
|
2592
|
+
case 5:
|
|
2593
|
+
if (target > maxSeeTime) {
|
|
2594
|
+
waitingMessage = false;
|
|
2595
|
+
try {
|
|
2596
|
+
video.currentTime = maxSeeTime;
|
|
2597
|
+
} catch (event2) {
|
|
2598
|
+
}
|
|
2599
|
+
message(language["timeScheduleAdjust"]["prohibitForwardNotViewed"]);
|
|
2600
|
+
return player;
|
|
2601
|
+
}
|
|
2602
|
+
break;
|
|
2603
|
+
}
|
|
2604
|
+
pSliderMouseDown = false;
|
|
2605
|
+
var ready = video.readyState >= 2 || duration && isFinite(duration) && duration > 0;
|
|
2606
|
+
if (!ready) {
|
|
2607
|
+
seekTime = target;
|
|
2608
|
+
if (target > 0) {
|
|
2609
|
+
maxSeeTime = Math.max(maxSeeTime, target);
|
|
2610
|
+
if (firstSeekTime < 0) {
|
|
2611
|
+
firstSeekTime = target;
|
|
2612
|
+
}
|
|
2524
2613
|
}
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
waitingMessage = false;
|
|
2529
|
-
video.currentTime = firstSeekTime;
|
|
2530
|
-
message(language["timeScheduleAdjust"]["prohibitLookBack"]);
|
|
2531
|
-
return;
|
|
2614
|
+
try {
|
|
2615
|
+
video.currentTime = target;
|
|
2616
|
+
} catch (event2) {
|
|
2532
2617
|
}
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2618
|
+
return player;
|
|
2619
|
+
}
|
|
2620
|
+
if (duration && isFinite(duration) && duration > 0 && target > duration) {
|
|
2621
|
+
target = Math.max(0, duration - 0.3);
|
|
2622
|
+
}
|
|
2623
|
+
if (target < 0) {
|
|
2624
|
+
target = 0;
|
|
2625
|
+
}
|
|
2626
|
+
if (vars["timeScheduleAdjust"] == 5 && target > maxSeeTime && seekTime && Math.abs(seekTime - target) < 0.5) {
|
|
2627
|
+
maxSeeTime = Math.max(maxSeeTime, target);
|
|
2628
|
+
}
|
|
2629
|
+
try {
|
|
2630
|
+
video.currentTime = target;
|
|
2631
|
+
seekTime = 0;
|
|
2632
|
+
if (target > maxSeeTime && vars["timeScheduleAdjust"] != 5) {
|
|
2633
|
+
maxSeeTime = target;
|
|
2540
2634
|
}
|
|
2541
|
-
|
|
2635
|
+
} catch (event2) {
|
|
2636
|
+
seekTime = target;
|
|
2637
|
+
}
|
|
2542
2638
|
}
|
|
2543
|
-
pSliderMouseDown = false;
|
|
2544
|
-
video.currentTime = fn2;
|
|
2545
2639
|
}
|
|
2546
2640
|
}
|
|
2547
2641
|
return player;
|
|
@@ -6617,7 +6711,9 @@ var CkPlayer = {
|
|
|
6617
6711
|
if (this.player) this.player.pause();
|
|
6618
6712
|
},
|
|
6619
6713
|
seek: function(time) {
|
|
6620
|
-
if (this.player)
|
|
6714
|
+
if (!this.player) return;
|
|
6715
|
+
var t = typeof time === "string" ? parseFloat(time) : time;
|
|
6716
|
+
if (!isNaN(t)) this.player.seek(t);
|
|
6621
6717
|
},
|
|
6622
6718
|
setVolume: function(vol) {
|
|
6623
6719
|
if (this.player) this.player.volume(vol);
|
package/dist/vue.js
CHANGED
|
@@ -200,10 +200,14 @@ var require_ckplayer = __commonJS({
|
|
|
200
200
|
//是否显示错误信息
|
|
201
201
|
pluginPath: "",
|
|
202
202
|
//插件与语言包根路径(bundler 下建议配置或设置 window.ckplayerBasePath)
|
|
203
|
-
autoPlug: true
|
|
203
|
+
autoPlug: true,
|
|
204
204
|
//未指定 plug 时,根据视频地址后缀自动选择 hls.js / flv.js / mpegts.js
|
|
205
|
+
preferBuiltinPlug: true,
|
|
206
|
+
//优先加载本包内置插件脚本,避免复用页面上其它版本的全局 Hls/flvjs/mpegts
|
|
207
|
+
cdnFallback: true
|
|
208
|
+
// getPath 失败时是否回退到 jsDelivr(内网可设 false,并配置 pluginPath)
|
|
205
209
|
};
|
|
206
|
-
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@
|
|
210
|
+
var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.2/dist/";
|
|
207
211
|
function ckplayerEmbed(videoObj) {
|
|
208
212
|
var rightMenu = [
|
|
209
213
|
{
|
|
@@ -383,7 +387,11 @@ var require_ckplayer = __commonJS({
|
|
|
383
387
|
if (fromScript && fromScript.indexOf(folder + "/") > -1 && fromScript.indexOf("undefined") === -1) {
|
|
384
388
|
return fromScript;
|
|
385
389
|
}
|
|
390
|
+
var allowCdn = !vars || vars["cdnFallback"] !== false;
|
|
386
391
|
var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
392
|
+
if (!allowCdn || !cdn || cdn.indexOf("1.0.2") > -1) {
|
|
393
|
+
return folder + "/" + file;
|
|
394
|
+
}
|
|
387
395
|
if (cdn.slice(-1) !== "/") {
|
|
388
396
|
cdn += "/";
|
|
389
397
|
}
|
|
@@ -651,12 +659,19 @@ var require_ckplayer = __commonJS({
|
|
|
651
659
|
if (!isUndefined(vars["seek"]) && !seekTime) {
|
|
652
660
|
if (valType(vars["seek"]) == "number" && vars["seek"] > 0) {
|
|
653
661
|
seekTime = vars["seek"];
|
|
654
|
-
}
|
|
655
|
-
if (valType(vars["seek"]) == "string" && vars["seek"] == "cookie" && cookieName) {
|
|
662
|
+
} else if (valType(vars["seek"]) == "string" && vars["seek"] == "cookie" && cookieName) {
|
|
656
663
|
var cke = player.cookie(cookieName);
|
|
657
664
|
if (cke) {
|
|
658
665
|
seekTime = cke["time"];
|
|
659
666
|
}
|
|
667
|
+
} else if (valType(vars["seek"]) == "string" && vars["seek"] !== "" && !isNaN(parseFloat(vars["seek"]))) {
|
|
668
|
+
seekTime = parseFloat(vars["seek"]);
|
|
669
|
+
}
|
|
670
|
+
if (seekTime && seekTime > 0) {
|
|
671
|
+
maxSeeTime = Math.max(maxSeeTime, seekTime);
|
|
672
|
+
if (firstSeekTime < 0) {
|
|
673
|
+
firstSeekTime = seekTime;
|
|
674
|
+
}
|
|
660
675
|
}
|
|
661
676
|
}
|
|
662
677
|
}, plugPlayer = function(url) {
|
|
@@ -691,6 +706,9 @@ var require_ckplayer = __commonJS({
|
|
|
691
706
|
hls = new Hls();
|
|
692
707
|
hls.loadSource(url);
|
|
693
708
|
hls.attachMedia(video);
|
|
709
|
+
hls.on(Hls.Events.MANIFEST_PARSED, function() {
|
|
710
|
+
applyPendingSeek();
|
|
711
|
+
});
|
|
694
712
|
hls.on(Hls.Events.ERROR, function(event2, data) {
|
|
695
713
|
var code = 9;
|
|
696
714
|
var message2 = language["error"]["loadingFailed"];
|
|
@@ -717,7 +735,7 @@ var require_ckplayer = __commonJS({
|
|
|
717
735
|
video.attr("src", url);
|
|
718
736
|
}
|
|
719
737
|
};
|
|
720
|
-
if (typeof Hls !== "undefined" && !isUndefined(Hls)) {
|
|
738
|
+
if (typeof Hls !== "undefined" && !isUndefined(Hls) && !vars["preferBuiltinPlug"]) {
|
|
721
739
|
startHls();
|
|
722
740
|
return;
|
|
723
741
|
}
|
|
@@ -755,7 +773,7 @@ var require_ckplayer = __commonJS({
|
|
|
755
773
|
});
|
|
756
774
|
}
|
|
757
775
|
};
|
|
758
|
-
if (typeof flvjs !== "undefined" && !isUndefined(flvjs)) {
|
|
776
|
+
if (typeof flvjs !== "undefined" && !isUndefined(flvjs) && !vars["preferBuiltinPlug"]) {
|
|
759
777
|
startFlv();
|
|
760
778
|
return;
|
|
761
779
|
}
|
|
@@ -793,7 +811,7 @@ var require_ckplayer = __commonJS({
|
|
|
793
811
|
});
|
|
794
812
|
}
|
|
795
813
|
};
|
|
796
|
-
if (typeof mpegts !== "undefined" && !isUndefined(mpegts)) {
|
|
814
|
+
if (typeof mpegts !== "undefined" && !isUndefined(mpegts) && !vars["preferBuiltinPlug"]) {
|
|
797
815
|
startMpegts();
|
|
798
816
|
return;
|
|
799
817
|
}
|
|
@@ -1388,6 +1406,30 @@ var require_ckplayer = __commonJS({
|
|
|
1388
1406
|
checkTrack();
|
|
1389
1407
|
}
|
|
1390
1408
|
}
|
|
1409
|
+
}, applyPendingSeek = function() {
|
|
1410
|
+
if (!seekTime || !video) {
|
|
1411
|
+
return;
|
|
1412
|
+
}
|
|
1413
|
+
if (!isUndefined(vars["live"]) && (valType(vars["live"]) == "boolean" && vars["live"] || valType(vars["live"]) == "number")) {
|
|
1414
|
+
return;
|
|
1415
|
+
}
|
|
1416
|
+
var t = seekTime;
|
|
1417
|
+
var dur = duration || video.duration || 0;
|
|
1418
|
+
if (dur && isFinite(dur) && dur > 0 && t >= dur) {
|
|
1419
|
+
t = Math.max(0, dur - 0.3);
|
|
1420
|
+
}
|
|
1421
|
+
if (t > 0) {
|
|
1422
|
+
maxSeeTime = Math.max(maxSeeTime, t);
|
|
1423
|
+
if (firstSeekTime < 0) {
|
|
1424
|
+
firstSeekTime = t;
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
seekTime = 0;
|
|
1428
|
+
try {
|
|
1429
|
+
video.currentTime = t;
|
|
1430
|
+
} catch (event2) {
|
|
1431
|
+
seekTime = t;
|
|
1432
|
+
}
|
|
1391
1433
|
}, loadedMetaData = function() {
|
|
1392
1434
|
eventTarget("loadedMetaData", {
|
|
1393
1435
|
width: CK.getWidth(),
|
|
@@ -1429,6 +1471,7 @@ var require_ckplayer = __commonJS({
|
|
|
1429
1471
|
canPlay: function() {
|
|
1430
1472
|
C["loading"].hide();
|
|
1431
1473
|
eventTarget("canplay");
|
|
1474
|
+
applyPendingSeek();
|
|
1432
1475
|
},
|
|
1433
1476
|
loadedData: function() {
|
|
1434
1477
|
eventTarget("loadeddata");
|
|
@@ -1457,6 +1500,7 @@ var require_ckplayer = __commonJS({
|
|
|
1457
1500
|
if (CT.videoWidth || CT.videoHeight || duration) {
|
|
1458
1501
|
loadedMetaData();
|
|
1459
1502
|
}
|
|
1503
|
+
applyPendingSeek();
|
|
1460
1504
|
var len = 0;
|
|
1461
1505
|
if (!isUndefined(this.buffered)) {
|
|
1462
1506
|
len = this.buffered.length;
|
|
@@ -1512,6 +1556,7 @@ var require_ckplayer = __commonJS({
|
|
|
1512
1556
|
if (CT.videoWidth || CT.videoHeight || duration) {
|
|
1513
1557
|
loadedMetaData();
|
|
1514
1558
|
}
|
|
1559
|
+
applyPendingSeek();
|
|
1515
1560
|
}
|
|
1516
1561
|
oldTime = playTime;
|
|
1517
1562
|
playTime = this.currentTime;
|
|
@@ -1723,9 +1768,8 @@ var require_ckplayer = __commonJS({
|
|
|
1723
1768
|
}
|
|
1724
1769
|
}
|
|
1725
1770
|
}
|
|
1726
|
-
if (seekTime && (isUndefined(vars["live"]) || !isUndefined(vars["live"]) && valType(vars["live"]) == "boolean" && !vars["live"])
|
|
1727
|
-
|
|
1728
|
-
seekTime = 0;
|
|
1771
|
+
if (seekTime && (isUndefined(vars["live"]) || !isUndefined(vars["live"]) && valType(vars["live"]) == "boolean" && !vars["live"])) {
|
|
1772
|
+
applyPendingSeek();
|
|
1729
1773
|
}
|
|
1730
1774
|
},
|
|
1731
1775
|
pause: function() {
|
|
@@ -2491,52 +2535,102 @@ var require_ckplayer = __commonJS({
|
|
|
2491
2535
|
/*
|
|
2492
2536
|
* seek
|
|
2493
2537
|
* 功能:监听跳转/执行跳转操作
|
|
2494
|
-
* @fn为函数时则监听视频跳转动作,@fn
|
|
2538
|
+
* @fn为函数时则监听视频跳转动作,@fn为数字(或数字字符串)时执行跳转操作
|
|
2495
2539
|
*/
|
|
2496
2540
|
seek: function(fn2) {
|
|
2497
2541
|
if (!isUndefined(fn2)) {
|
|
2498
2542
|
if (valType(fn2) == "function") {
|
|
2499
2543
|
newEvent.addEventListener("seek", fn2);
|
|
2500
|
-
}
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
if (
|
|
2511
|
-
|
|
2512
|
-
return;
|
|
2544
|
+
} else {
|
|
2545
|
+
var target = null;
|
|
2546
|
+
if (valType(fn2) == "number" && !isNaN(fn2)) {
|
|
2547
|
+
target = fn2;
|
|
2548
|
+
} else if (valType(fn2) == "string" && fn2 !== "" && fn2 !== "cookie" && !isNaN(parseFloat(fn2))) {
|
|
2549
|
+
target = parseFloat(fn2);
|
|
2550
|
+
}
|
|
2551
|
+
if (target !== null && video) {
|
|
2552
|
+
if (target > 0 && (seekTime && Math.abs(seekTime - target) < 0.5 || vars["seek"] && parseFloat(vars["seek"]) > 0 && Math.abs(parseFloat(vars["seek"]) - target) < 0.5)) {
|
|
2553
|
+
maxSeeTime = Math.max(maxSeeTime, target);
|
|
2554
|
+
if (firstSeekTime < 0) {
|
|
2555
|
+
firstSeekTime = target;
|
|
2513
2556
|
}
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
message(language["timeScheduleAdjust"]["
|
|
2518
|
-
return;
|
|
2557
|
+
}
|
|
2558
|
+
switch (vars["timeScheduleAdjust"]) {
|
|
2559
|
+
case 0:
|
|
2560
|
+
message(language["timeScheduleAdjust"]["prohibit"]);
|
|
2561
|
+
return player;
|
|
2562
|
+
case 1:
|
|
2563
|
+
break;
|
|
2564
|
+
case 2:
|
|
2565
|
+
if (target < oldTime) {
|
|
2566
|
+
message(language["timeScheduleAdjust"]["prohibitBackOff"]);
|
|
2567
|
+
return player;
|
|
2568
|
+
}
|
|
2569
|
+
break;
|
|
2570
|
+
case 3:
|
|
2571
|
+
if (target > oldTime) {
|
|
2572
|
+
message(language["timeScheduleAdjust"]["prohibitForward"]);
|
|
2573
|
+
return player;
|
|
2574
|
+
}
|
|
2575
|
+
break;
|
|
2576
|
+
case 4:
|
|
2577
|
+
if (target < firstSeekTime) {
|
|
2578
|
+
waitingMessage = false;
|
|
2579
|
+
try {
|
|
2580
|
+
video.currentTime = firstSeekTime;
|
|
2581
|
+
} catch (event2) {
|
|
2582
|
+
}
|
|
2583
|
+
message(language["timeScheduleAdjust"]["prohibitLookBack"]);
|
|
2584
|
+
return player;
|
|
2585
|
+
}
|
|
2586
|
+
break;
|
|
2587
|
+
case 5:
|
|
2588
|
+
if (target > maxSeeTime) {
|
|
2589
|
+
waitingMessage = false;
|
|
2590
|
+
try {
|
|
2591
|
+
video.currentTime = maxSeeTime;
|
|
2592
|
+
} catch (event2) {
|
|
2593
|
+
}
|
|
2594
|
+
message(language["timeScheduleAdjust"]["prohibitForwardNotViewed"]);
|
|
2595
|
+
return player;
|
|
2596
|
+
}
|
|
2597
|
+
break;
|
|
2598
|
+
}
|
|
2599
|
+
pSliderMouseDown = false;
|
|
2600
|
+
var ready = video.readyState >= 2 || duration && isFinite(duration) && duration > 0;
|
|
2601
|
+
if (!ready) {
|
|
2602
|
+
seekTime = target;
|
|
2603
|
+
if (target > 0) {
|
|
2604
|
+
maxSeeTime = Math.max(maxSeeTime, target);
|
|
2605
|
+
if (firstSeekTime < 0) {
|
|
2606
|
+
firstSeekTime = target;
|
|
2607
|
+
}
|
|
2519
2608
|
}
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
waitingMessage = false;
|
|
2524
|
-
video.currentTime = firstSeekTime;
|
|
2525
|
-
message(language["timeScheduleAdjust"]["prohibitLookBack"]);
|
|
2526
|
-
return;
|
|
2609
|
+
try {
|
|
2610
|
+
video.currentTime = target;
|
|
2611
|
+
} catch (event2) {
|
|
2527
2612
|
}
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2613
|
+
return player;
|
|
2614
|
+
}
|
|
2615
|
+
if (duration && isFinite(duration) && duration > 0 && target > duration) {
|
|
2616
|
+
target = Math.max(0, duration - 0.3);
|
|
2617
|
+
}
|
|
2618
|
+
if (target < 0) {
|
|
2619
|
+
target = 0;
|
|
2620
|
+
}
|
|
2621
|
+
if (vars["timeScheduleAdjust"] == 5 && target > maxSeeTime && seekTime && Math.abs(seekTime - target) < 0.5) {
|
|
2622
|
+
maxSeeTime = Math.max(maxSeeTime, target);
|
|
2623
|
+
}
|
|
2624
|
+
try {
|
|
2625
|
+
video.currentTime = target;
|
|
2626
|
+
seekTime = 0;
|
|
2627
|
+
if (target > maxSeeTime && vars["timeScheduleAdjust"] != 5) {
|
|
2628
|
+
maxSeeTime = target;
|
|
2535
2629
|
}
|
|
2536
|
-
|
|
2630
|
+
} catch (event2) {
|
|
2631
|
+
seekTime = target;
|
|
2632
|
+
}
|
|
2537
2633
|
}
|
|
2538
|
-
pSliderMouseDown = false;
|
|
2539
|
-
video.currentTime = fn2;
|
|
2540
2634
|
}
|
|
2541
2635
|
}
|
|
2542
2636
|
return player;
|
|
@@ -6604,7 +6698,9 @@ var CkPlayer = {
|
|
|
6604
6698
|
if (this.player) this.player.pause();
|
|
6605
6699
|
},
|
|
6606
6700
|
seek: function(time) {
|
|
6607
|
-
if (this.player)
|
|
6701
|
+
if (!this.player) return;
|
|
6702
|
+
var t = typeof time === "string" ? parseFloat(time) : time;
|
|
6703
|
+
if (!isNaN(t)) this.player.seek(t);
|
|
6608
6704
|
},
|
|
6609
6705
|
setVolume: function(vol) {
|
|
6610
6706
|
if (this.player) this.player.volume(vol);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ckplayer-plus",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Enhanced ckplayer X3 packaging with Vue 2/3 and React wrappers — ESM-ready HTML5 video player",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ckplayer",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"./style.css": "./dist/ckplayer.css",
|
|
55
55
|
"./ckplayer.css": "./dist/ckplayer.css",
|
|
56
56
|
"./ckplayer.min.js": "./dist/ckplayer.min.js",
|
|
57
|
+
"./images/*": "./dist/images/*",
|
|
57
58
|
"./package.json": "./package.json"
|
|
58
59
|
},
|
|
59
60
|
"files": [
|
package/types/index.d.ts
CHANGED
|
@@ -18,12 +18,21 @@ export interface CkplayerConfig {
|
|
|
18
18
|
* mp4 → 不加载插件;m3u8 → hls.js;flv → flv.js;ts → mpegts.js
|
|
19
19
|
*/
|
|
20
20
|
autoPlug?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 优先加载本包内置 hls/flv/mpegts,默认 true。
|
|
23
|
+
* 设为 false 时若页面已有全局 Hls/flvjs/mpegts 则直接复用。
|
|
24
|
+
*/
|
|
25
|
+
preferBuiltinPlug?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* getPath 失败时是否回退 jsDelivr,默认 true。内网无外网时请设 false 并配置 pluginPath。
|
|
28
|
+
*/
|
|
29
|
+
cdnFallback?: boolean;
|
|
21
30
|
/**
|
|
22
31
|
* 插件与语言包根路径(需含 hls.js/、flv.js/ 等子目录)。
|
|
23
32
|
* 一般无需配置:会优先用 window.ckplayerBasePath,否则回退到本包 jsDelivr CDN。
|
|
24
33
|
*/
|
|
25
34
|
pluginPath?: string;
|
|
26
|
-
|
|
35
|
+
/** 初始跳转秒数;续播时会同步 maxSeeTime(兼容 timeScheduleAdjust=5) */
|
|
27
36
|
seek?: number | string;
|
|
28
37
|
crossOrigin?: string;
|
|
29
38
|
cookie?: string | object | any[];
|