ckplayer-plus 1.0.5 → 1.0.6

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/vue.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.5/dist/";
215
+ var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.6/dist/";
216
216
  function ckplayerEmbed(videoObj) {
217
217
  var rightMenu = [
218
218
  {
@@ -237,6 +237,11 @@ var require_ckplayer = __commonJS({
237
237
  var paused = true;
238
238
  var loadTime = 0;
239
239
  var seekTime = 0;
240
+ var seekRetryTimer = null;
241
+ var seekRetryCount = 0;
242
+ var seekApplyLock = false;
243
+ var decodeRecoverCount = 0;
244
+ var hlsStartPositionUsed = false;
240
245
  var oldTime = 0, playTime = 0, firstSeekTime = -1, maxSeeTime = 0;
241
246
  var isChangeDef = true;
242
247
  var playType = "";
@@ -402,7 +407,7 @@ var require_ckplayer = __commonJS({
402
407
  }
403
408
  var allowCdn = !vars || vars["cdnFallback"] !== false;
404
409
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
405
- if (!allowCdn || !cdn || cdn.indexOf("1.0.5") > -1) {
410
+ if (!allowCdn || !cdn || cdn.indexOf("1.0.6") > -1) {
406
411
  return folder + "/" + file;
407
412
  }
408
413
  if (cdn.slice(-1) !== "/") {
@@ -716,11 +721,24 @@ var require_ckplayer = __commonJS({
716
721
  }, hlsPlayer = function(url) {
717
722
  var startHls = function() {
718
723
  if (typeof Hls !== "undefined" && !isUndefined(Hls) && Hls.isSupported()) {
719
- hls = new Hls();
724
+ var hlsConf = {};
725
+ if (seekTime && seekTime > 0 && (isUndefined(vars["live"]) || !vars["live"])) {
726
+ hlsConf.startPosition = seekTime;
727
+ maxSeeTime = Math.max(maxSeeTime, seekTime);
728
+ if (firstSeekTime < 0) {
729
+ firstSeekTime = seekTime;
730
+ }
731
+ seekTime = 0;
732
+ hlsStartPositionUsed = true;
733
+ clearSeekRetry();
734
+ }
735
+ hls = new Hls(hlsConf);
720
736
  hls.loadSource(url);
721
737
  hls.attachMedia(video);
722
738
  hls.on(Hls.Events.MANIFEST_PARSED, function() {
723
- applyPendingSeek();
739
+ if (!hlsStartPositionUsed) {
740
+ applyPendingSeek();
741
+ }
724
742
  });
725
743
  hls.on(Hls.Events.ERROR, function(event2, data) {
726
744
  var code = 9;
@@ -738,6 +756,13 @@ var require_ckplayer = __commonJS({
738
756
  }
739
757
  }
740
758
  }
759
+ if (fatal && data.type === Hls.ErrorTypes.MEDIA_ERROR && hls && typeof hls.recoverMediaError === "function") {
760
+ try {
761
+ hls.recoverMediaError();
762
+ fatal = false;
763
+ } catch (errRecover) {
764
+ }
765
+ }
741
766
  CT.error = { code, message: message2 };
742
767
  eventTarget("error", CT.error);
743
768
  if (fatal) {
@@ -1419,8 +1444,28 @@ var require_ckplayer = __commonJS({
1419
1444
  checkTrack();
1420
1445
  }
1421
1446
  }
1422
- }, applyPendingSeek = function() {
1423
- if (!seekTime || !video) {
1447
+ }, timeInBuffered = function(t) {
1448
+ if (!video || isUndefined(video.buffered)) {
1449
+ return false;
1450
+ }
1451
+ try {
1452
+ var buf = video.buffered;
1453
+ for (var i2 = 0; i2 < buf.length; i2++) {
1454
+ if (t >= buf.start(i2) - 0.35 && t <= buf.end(i2) + 0.15) {
1455
+ return true;
1456
+ }
1457
+ }
1458
+ } catch (event2) {
1459
+ }
1460
+ return false;
1461
+ }, clearSeekRetry = function() {
1462
+ if (seekRetryTimer) {
1463
+ clearTimeout(seekRetryTimer);
1464
+ seekRetryTimer = null;
1465
+ }
1466
+ seekRetryCount = 0;
1467
+ }, applyPendingSeek = function(force) {
1468
+ if (!seekTime || !video || seekApplyLock) {
1424
1469
  return;
1425
1470
  }
1426
1471
  if (!isUndefined(vars["live"]) && (valType(vars["live"]) == "boolean" && vars["live"] || valType(vars["live"]) == "number")) {
@@ -1431,18 +1476,92 @@ var require_ckplayer = __commonJS({
1431
1476
  if (dur && isFinite(dur) && dur > 0 && t >= dur) {
1432
1477
  t = Math.max(0, dur - 0.3);
1433
1478
  }
1479
+ if (t <= 0) {
1480
+ seekTime = 0;
1481
+ clearSeekRetry();
1482
+ return;
1483
+ }
1484
+ var readyEnough = !isUndefined(video.readyState) && video.readyState >= 2;
1485
+ var bufferedOk = timeInBuffered(t);
1486
+ if (!force && !bufferedOk && (!readyEnough || video.readyState < 3)) {
1487
+ seekRetryCount++;
1488
+ if (seekRetryCount <= 50) {
1489
+ try {
1490
+ if (hls && typeof hls.startLoad === "function") {
1491
+ hls.startLoad(t);
1492
+ }
1493
+ } catch (event2) {
1494
+ }
1495
+ if (seekRetryTimer) {
1496
+ clearTimeout(seekRetryTimer);
1497
+ }
1498
+ seekRetryTimer = setTimeout(function() {
1499
+ applyPendingSeek(false);
1500
+ }, 200);
1501
+ return;
1502
+ }
1503
+ }
1504
+ clearSeekRetry();
1434
1505
  if (t > 0) {
1435
1506
  maxSeeTime = Math.max(maxSeeTime, t);
1436
1507
  if (firstSeekTime < 0) {
1437
1508
  firstSeekTime = t;
1438
1509
  }
1439
1510
  }
1511
+ seekApplyLock = true;
1440
1512
  seekTime = 0;
1441
1513
  try {
1442
1514
  video.currentTime = t;
1443
1515
  } catch (event2) {
1444
1516
  seekTime = t;
1517
+ seekApplyLock = false;
1445
1518
  }
1519
+ setTimeout(function() {
1520
+ seekApplyLock = false;
1521
+ }, 800);
1522
+ }, recoverDecodeError = function() {
1523
+ if (decodeRecoverCount >= 2) {
1524
+ return false;
1525
+ }
1526
+ decodeRecoverCount++;
1527
+ var resumeAt = playTime > 0 ? playTime : vars["seek"] ? parseFloat(vars["seek"]) : 0;
1528
+ if (isNaN(resumeAt) || resumeAt < 0) {
1529
+ resumeAt = 0;
1530
+ }
1531
+ try {
1532
+ if (hls && typeof hls.recoverMediaError === "function") {
1533
+ hls.recoverMediaError();
1534
+ if (resumeAt > 0) {
1535
+ seekTime = resumeAt;
1536
+ seekApplyLock = false;
1537
+ setTimeout(function() {
1538
+ applyPendingSeek(true);
1539
+ }, 300);
1540
+ }
1541
+ return true;
1542
+ }
1543
+ } catch (event2) {
1544
+ }
1545
+ try {
1546
+ var soft = Math.max(0, resumeAt - 1.5);
1547
+ seekTime = resumeAt;
1548
+ seekApplyLock = false;
1549
+ if (video) {
1550
+ video.currentTime = soft;
1551
+ }
1552
+ setTimeout(function() {
1553
+ applyPendingSeek(true);
1554
+ if (video && video.paused && vars["autoplay"]) {
1555
+ try {
1556
+ video.play();
1557
+ } catch (e2) {
1558
+ }
1559
+ }
1560
+ }, 400);
1561
+ return true;
1562
+ } catch (event2) {
1563
+ }
1564
+ return false;
1446
1565
  }, loadedMetaData = function() {
1447
1566
  eventTarget("loadedMetaData", {
1448
1567
  width: CK.getWidth(),
@@ -1619,6 +1738,11 @@ var require_ckplayer = __commonJS({
1619
1738
  if (!isUndefined(errorInfo.message)) {
1620
1739
  msg = errorInfo.message;
1621
1740
  }
1741
+ if (code === 3 && recoverDecodeError()) {
1742
+ CT.error = { code, message: msg };
1743
+ eventTarget("error", CT.error);
1744
+ return;
1745
+ }
1622
1746
  CT.error = { code, message: msg };
1623
1747
  showError();
1624
1748
  } else {
@@ -1668,6 +1792,8 @@ var require_ckplayer = __commonJS({
1668
1792
  eventTarget("error", CT.error);
1669
1793
  },
1670
1794
  seeked: function() {
1795
+ seekApplyLock = false;
1796
+ decodeRecoverCount = 0;
1671
1797
  if (paused) {
1672
1798
  player.play();
1673
1799
  }
@@ -2619,10 +2745,6 @@ var require_ckplayer = __commonJS({
2619
2745
  firstSeekTime = target;
2620
2746
  }
2621
2747
  }
2622
- try {
2623
- video.currentTime = target;
2624
- } catch (event2) {
2625
- }
2626
2748
  return player;
2627
2749
  }
2628
2750
  if (duration && isFinite(duration) && duration > 0 && target > duration) {
@@ -2634,6 +2756,11 @@ var require_ckplayer = __commonJS({
2634
2756
  if (vars["timeScheduleAdjust"] == 5 && target > maxSeeTime && seekTime && Math.abs(seekTime - target) < 0.5) {
2635
2757
  maxSeeTime = Math.max(maxSeeTime, target);
2636
2758
  }
2759
+ if (target > 0.5 && !timeInBuffered(target) && video.readyState < 3) {
2760
+ seekTime = target;
2761
+ applyPendingSeek(false);
2762
+ return player;
2763
+ }
2637
2764
  try {
2638
2765
  video.currentTime = target;
2639
2766
  seekTime = 0;
@@ -5848,7 +5975,7 @@ var require_ckplayer = __commonJS({
5848
5975
  if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
5849
5976
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
5850
5977
  var m2 = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
5851
- if (cdn && cdn.indexOf("1.0.5") === -1 && m2) {
5978
+ if (cdn && cdn.indexOf("1.0.6") === -1 && m2) {
5852
5979
  if (cdn.slice(-1) !== "/") {
5853
5980
  cdn += "/";
5854
5981
  }
package/dist/vue.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.5/dist/";
210
+ var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.6/dist/";
211
211
  function ckplayerEmbed(videoObj) {
212
212
  var rightMenu = [
213
213
  {
@@ -232,6 +232,11 @@ var require_ckplayer = __commonJS({
232
232
  var paused = true;
233
233
  var loadTime = 0;
234
234
  var seekTime = 0;
235
+ var seekRetryTimer = null;
236
+ var seekRetryCount = 0;
237
+ var seekApplyLock = false;
238
+ var decodeRecoverCount = 0;
239
+ var hlsStartPositionUsed = false;
235
240
  var oldTime = 0, playTime = 0, firstSeekTime = -1, maxSeeTime = 0;
236
241
  var isChangeDef = true;
237
242
  var playType = "";
@@ -397,7 +402,7 @@ var require_ckplayer = __commonJS({
397
402
  }
398
403
  var allowCdn = !vars || vars["cdnFallback"] !== false;
399
404
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
400
- if (!allowCdn || !cdn || cdn.indexOf("1.0.5") > -1) {
405
+ if (!allowCdn || !cdn || cdn.indexOf("1.0.6") > -1) {
401
406
  return folder + "/" + file;
402
407
  }
403
408
  if (cdn.slice(-1) !== "/") {
@@ -711,11 +716,24 @@ var require_ckplayer = __commonJS({
711
716
  }, hlsPlayer = function(url) {
712
717
  var startHls = function() {
713
718
  if (typeof Hls !== "undefined" && !isUndefined(Hls) && Hls.isSupported()) {
714
- hls = new Hls();
719
+ var hlsConf = {};
720
+ if (seekTime && seekTime > 0 && (isUndefined(vars["live"]) || !vars["live"])) {
721
+ hlsConf.startPosition = seekTime;
722
+ maxSeeTime = Math.max(maxSeeTime, seekTime);
723
+ if (firstSeekTime < 0) {
724
+ firstSeekTime = seekTime;
725
+ }
726
+ seekTime = 0;
727
+ hlsStartPositionUsed = true;
728
+ clearSeekRetry();
729
+ }
730
+ hls = new Hls(hlsConf);
715
731
  hls.loadSource(url);
716
732
  hls.attachMedia(video);
717
733
  hls.on(Hls.Events.MANIFEST_PARSED, function() {
718
- applyPendingSeek();
734
+ if (!hlsStartPositionUsed) {
735
+ applyPendingSeek();
736
+ }
719
737
  });
720
738
  hls.on(Hls.Events.ERROR, function(event2, data) {
721
739
  var code = 9;
@@ -733,6 +751,13 @@ var require_ckplayer = __commonJS({
733
751
  }
734
752
  }
735
753
  }
754
+ if (fatal && data.type === Hls.ErrorTypes.MEDIA_ERROR && hls && typeof hls.recoverMediaError === "function") {
755
+ try {
756
+ hls.recoverMediaError();
757
+ fatal = false;
758
+ } catch (errRecover) {
759
+ }
760
+ }
736
761
  CT.error = { code, message: message2 };
737
762
  eventTarget("error", CT.error);
738
763
  if (fatal) {
@@ -1414,8 +1439,28 @@ var require_ckplayer = __commonJS({
1414
1439
  checkTrack();
1415
1440
  }
1416
1441
  }
1417
- }, applyPendingSeek = function() {
1418
- if (!seekTime || !video) {
1442
+ }, timeInBuffered = function(t) {
1443
+ if (!video || isUndefined(video.buffered)) {
1444
+ return false;
1445
+ }
1446
+ try {
1447
+ var buf = video.buffered;
1448
+ for (var i2 = 0; i2 < buf.length; i2++) {
1449
+ if (t >= buf.start(i2) - 0.35 && t <= buf.end(i2) + 0.15) {
1450
+ return true;
1451
+ }
1452
+ }
1453
+ } catch (event2) {
1454
+ }
1455
+ return false;
1456
+ }, clearSeekRetry = function() {
1457
+ if (seekRetryTimer) {
1458
+ clearTimeout(seekRetryTimer);
1459
+ seekRetryTimer = null;
1460
+ }
1461
+ seekRetryCount = 0;
1462
+ }, applyPendingSeek = function(force) {
1463
+ if (!seekTime || !video || seekApplyLock) {
1419
1464
  return;
1420
1465
  }
1421
1466
  if (!isUndefined(vars["live"]) && (valType(vars["live"]) == "boolean" && vars["live"] || valType(vars["live"]) == "number")) {
@@ -1426,18 +1471,92 @@ var require_ckplayer = __commonJS({
1426
1471
  if (dur && isFinite(dur) && dur > 0 && t >= dur) {
1427
1472
  t = Math.max(0, dur - 0.3);
1428
1473
  }
1474
+ if (t <= 0) {
1475
+ seekTime = 0;
1476
+ clearSeekRetry();
1477
+ return;
1478
+ }
1479
+ var readyEnough = !isUndefined(video.readyState) && video.readyState >= 2;
1480
+ var bufferedOk = timeInBuffered(t);
1481
+ if (!force && !bufferedOk && (!readyEnough || video.readyState < 3)) {
1482
+ seekRetryCount++;
1483
+ if (seekRetryCount <= 50) {
1484
+ try {
1485
+ if (hls && typeof hls.startLoad === "function") {
1486
+ hls.startLoad(t);
1487
+ }
1488
+ } catch (event2) {
1489
+ }
1490
+ if (seekRetryTimer) {
1491
+ clearTimeout(seekRetryTimer);
1492
+ }
1493
+ seekRetryTimer = setTimeout(function() {
1494
+ applyPendingSeek(false);
1495
+ }, 200);
1496
+ return;
1497
+ }
1498
+ }
1499
+ clearSeekRetry();
1429
1500
  if (t > 0) {
1430
1501
  maxSeeTime = Math.max(maxSeeTime, t);
1431
1502
  if (firstSeekTime < 0) {
1432
1503
  firstSeekTime = t;
1433
1504
  }
1434
1505
  }
1506
+ seekApplyLock = true;
1435
1507
  seekTime = 0;
1436
1508
  try {
1437
1509
  video.currentTime = t;
1438
1510
  } catch (event2) {
1439
1511
  seekTime = t;
1512
+ seekApplyLock = false;
1440
1513
  }
1514
+ setTimeout(function() {
1515
+ seekApplyLock = false;
1516
+ }, 800);
1517
+ }, recoverDecodeError = function() {
1518
+ if (decodeRecoverCount >= 2) {
1519
+ return false;
1520
+ }
1521
+ decodeRecoverCount++;
1522
+ var resumeAt = playTime > 0 ? playTime : vars["seek"] ? parseFloat(vars["seek"]) : 0;
1523
+ if (isNaN(resumeAt) || resumeAt < 0) {
1524
+ resumeAt = 0;
1525
+ }
1526
+ try {
1527
+ if (hls && typeof hls.recoverMediaError === "function") {
1528
+ hls.recoverMediaError();
1529
+ if (resumeAt > 0) {
1530
+ seekTime = resumeAt;
1531
+ seekApplyLock = false;
1532
+ setTimeout(function() {
1533
+ applyPendingSeek(true);
1534
+ }, 300);
1535
+ }
1536
+ return true;
1537
+ }
1538
+ } catch (event2) {
1539
+ }
1540
+ try {
1541
+ var soft = Math.max(0, resumeAt - 1.5);
1542
+ seekTime = resumeAt;
1543
+ seekApplyLock = false;
1544
+ if (video) {
1545
+ video.currentTime = soft;
1546
+ }
1547
+ setTimeout(function() {
1548
+ applyPendingSeek(true);
1549
+ if (video && video.paused && vars["autoplay"]) {
1550
+ try {
1551
+ video.play();
1552
+ } catch (e2) {
1553
+ }
1554
+ }
1555
+ }, 400);
1556
+ return true;
1557
+ } catch (event2) {
1558
+ }
1559
+ return false;
1441
1560
  }, loadedMetaData = function() {
1442
1561
  eventTarget("loadedMetaData", {
1443
1562
  width: CK.getWidth(),
@@ -1614,6 +1733,11 @@ var require_ckplayer = __commonJS({
1614
1733
  if (!isUndefined(errorInfo.message)) {
1615
1734
  msg = errorInfo.message;
1616
1735
  }
1736
+ if (code === 3 && recoverDecodeError()) {
1737
+ CT.error = { code, message: msg };
1738
+ eventTarget("error", CT.error);
1739
+ return;
1740
+ }
1617
1741
  CT.error = { code, message: msg };
1618
1742
  showError();
1619
1743
  } else {
@@ -1663,6 +1787,8 @@ var require_ckplayer = __commonJS({
1663
1787
  eventTarget("error", CT.error);
1664
1788
  },
1665
1789
  seeked: function() {
1790
+ seekApplyLock = false;
1791
+ decodeRecoverCount = 0;
1666
1792
  if (paused) {
1667
1793
  player.play();
1668
1794
  }
@@ -2614,10 +2740,6 @@ var require_ckplayer = __commonJS({
2614
2740
  firstSeekTime = target;
2615
2741
  }
2616
2742
  }
2617
- try {
2618
- video.currentTime = target;
2619
- } catch (event2) {
2620
- }
2621
2743
  return player;
2622
2744
  }
2623
2745
  if (duration && isFinite(duration) && duration > 0 && target > duration) {
@@ -2629,6 +2751,11 @@ var require_ckplayer = __commonJS({
2629
2751
  if (vars["timeScheduleAdjust"] == 5 && target > maxSeeTime && seekTime && Math.abs(seekTime - target) < 0.5) {
2630
2752
  maxSeeTime = Math.max(maxSeeTime, target);
2631
2753
  }
2754
+ if (target > 0.5 && !timeInBuffered(target) && video.readyState < 3) {
2755
+ seekTime = target;
2756
+ applyPendingSeek(false);
2757
+ return player;
2758
+ }
2632
2759
  try {
2633
2760
  video.currentTime = target;
2634
2761
  seekTime = 0;
@@ -5843,7 +5970,7 @@ var require_ckplayer = __commonJS({
5843
5970
  if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
5844
5971
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
5845
5972
  var m2 = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
5846
- if (cdn && cdn.indexOf("1.0.5") === -1 && m2) {
5973
+ if (cdn && cdn.indexOf("1.0.6") === -1 && m2) {
5847
5974
  if (cdn.slice(-1) !== "/") {
5848
5975
  cdn += "/";
5849
5976
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ckplayer-plus",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
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",