ckplayer-plus 1.0.7 → 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/index.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.7/dist/";
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.7") > -1) {
413
+ if (!allowCdn || !cdn || cdn.indexOf("1.0.8") > -1) {
411
414
  return folder + "/" + file;
412
415
  }
413
416
  if (cdn.slice(-1) !== "/") {
@@ -618,10 +621,44 @@ var require_ckplayer = __commonJS({
618
621
  if (!seekTime) {
619
622
  applyResumeSeekState(parseResumeSeekFromVars());
620
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;
621
655
  }, destroyStreamPlayers = function() {
622
656
  clearSeekRetry();
623
657
  seekApplyLock = false;
624
658
  hlsStartPositionUsed = false;
659
+ hlsResumeTarget = -1;
660
+ hlsLoadAt = -1;
661
+ hlsLoadTs = 0;
625
662
  decodeRecoverCount = 0;
626
663
  if (hls) {
627
664
  try {
@@ -780,6 +817,9 @@ var require_ckplayer = __commonJS({
780
817
  if (firstSeekTime < 0) {
781
818
  firstSeekTime = resumeAt;
782
819
  }
820
+ hlsResumeTarget = resumeAt;
821
+ hlsLoadAt = resumeAt;
822
+ hlsLoadTs = Date.now();
783
823
  seekTime = 0;
784
824
  hlsStartPositionUsed = true;
785
825
  clearSeekRetry();
@@ -792,6 +832,21 @@ var require_ckplayer = __commonJS({
792
832
  applyPendingSeek();
793
833
  }
794
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
+ });
795
850
  hls.on(Hls.Events.ERROR, function(event2, data) {
796
851
  var code = 9;
797
852
  var message2 = language["error"]["loadingFailed"];
@@ -1539,14 +1594,9 @@ var require_ckplayer = __commonJS({
1539
1594
  firstSeekTime = t;
1540
1595
  }
1541
1596
  }
1542
- if (hls && typeof hls.startLoad === "function") {
1597
+ if (hlsSeekTo(t, !!force)) {
1543
1598
  clearSeekRetry();
1544
1599
  seekTime = 0;
1545
- try {
1546
- hls.startLoad(t);
1547
- } catch (event2) {
1548
- seekTime = t;
1549
- }
1550
1600
  return;
1551
1601
  }
1552
1602
  var readyEnough = !isUndefined(video.readyState) && video.readyState >= 2;
@@ -2818,13 +2868,8 @@ var require_ckplayer = __commonJS({
2818
2868
  applyPendingSeek(false);
2819
2869
  return player;
2820
2870
  }
2821
- if (hls && typeof hls.startLoad === "function") {
2871
+ if (hlsSeekTo(target, false)) {
2822
2872
  seekTime = 0;
2823
- try {
2824
- hls.startLoad(target);
2825
- } catch (event2) {
2826
- seekTime = target;
2827
- }
2828
2873
  return player;
2829
2874
  }
2830
2875
  try {
@@ -6041,7 +6086,7 @@ var require_ckplayer = __commonJS({
6041
6086
  if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
6042
6087
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
6043
6088
  var m2 = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
6044
- if (cdn && cdn.indexOf("1.0.7") === -1 && m2) {
6089
+ if (cdn && cdn.indexOf("1.0.8") === -1 && m2) {
6045
6090
  if (cdn.slice(-1) !== "/") {
6046
6091
  cdn += "/";
6047
6092
  }
package/dist/index.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.7/dist/";
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.7") > -1) {
408
+ if (!allowCdn || !cdn || cdn.indexOf("1.0.8") > -1) {
406
409
  return folder + "/" + file;
407
410
  }
408
411
  if (cdn.slice(-1) !== "/") {
@@ -613,10 +616,44 @@ var require_ckplayer = __commonJS({
613
616
  if (!seekTime) {
614
617
  applyResumeSeekState(parseResumeSeekFromVars());
615
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;
616
650
  }, destroyStreamPlayers = function() {
617
651
  clearSeekRetry();
618
652
  seekApplyLock = false;
619
653
  hlsStartPositionUsed = false;
654
+ hlsResumeTarget = -1;
655
+ hlsLoadAt = -1;
656
+ hlsLoadTs = 0;
620
657
  decodeRecoverCount = 0;
621
658
  if (hls) {
622
659
  try {
@@ -775,6 +812,9 @@ var require_ckplayer = __commonJS({
775
812
  if (firstSeekTime < 0) {
776
813
  firstSeekTime = resumeAt;
777
814
  }
815
+ hlsResumeTarget = resumeAt;
816
+ hlsLoadAt = resumeAt;
817
+ hlsLoadTs = Date.now();
778
818
  seekTime = 0;
779
819
  hlsStartPositionUsed = true;
780
820
  clearSeekRetry();
@@ -787,6 +827,21 @@ var require_ckplayer = __commonJS({
787
827
  applyPendingSeek();
788
828
  }
789
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
+ });
790
845
  hls.on(Hls.Events.ERROR, function(event2, data) {
791
846
  var code = 9;
792
847
  var message2 = language["error"]["loadingFailed"];
@@ -1534,14 +1589,9 @@ var require_ckplayer = __commonJS({
1534
1589
  firstSeekTime = t;
1535
1590
  }
1536
1591
  }
1537
- if (hls && typeof hls.startLoad === "function") {
1592
+ if (hlsSeekTo(t, !!force)) {
1538
1593
  clearSeekRetry();
1539
1594
  seekTime = 0;
1540
- try {
1541
- hls.startLoad(t);
1542
- } catch (event2) {
1543
- seekTime = t;
1544
- }
1545
1595
  return;
1546
1596
  }
1547
1597
  var readyEnough = !isUndefined(video.readyState) && video.readyState >= 2;
@@ -2813,13 +2863,8 @@ var require_ckplayer = __commonJS({
2813
2863
  applyPendingSeek(false);
2814
2864
  return player;
2815
2865
  }
2816
- if (hls && typeof hls.startLoad === "function") {
2866
+ if (hlsSeekTo(target, false)) {
2817
2867
  seekTime = 0;
2818
- try {
2819
- hls.startLoad(target);
2820
- } catch (event2) {
2821
- seekTime = target;
2822
- }
2823
2868
  return player;
2824
2869
  }
2825
2870
  try {
@@ -6036,7 +6081,7 @@ var require_ckplayer = __commonJS({
6036
6081
  if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
6037
6082
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
6038
6083
  var m2 = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
6039
- if (cdn && cdn.indexOf("1.0.7") === -1 && m2) {
6084
+ if (cdn && cdn.indexOf("1.0.8") === -1 && m2) {
6040
6085
  if (cdn.slice(-1) !== "/") {
6041
6086
  cdn += "/";
6042
6087
  }
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.7/dist/";
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.7") > -1) {
413
+ if (!allowCdn || !cdn || cdn.indexOf("1.0.8") > -1) {
411
414
  return folder + "/" + file;
412
415
  }
413
416
  if (cdn.slice(-1) !== "/") {
@@ -618,10 +621,44 @@ var require_ckplayer = __commonJS({
618
621
  if (!seekTime) {
619
622
  applyResumeSeekState(parseResumeSeekFromVars());
620
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;
621
655
  }, destroyStreamPlayers = function() {
622
656
  clearSeekRetry();
623
657
  seekApplyLock = false;
624
658
  hlsStartPositionUsed = false;
659
+ hlsResumeTarget = -1;
660
+ hlsLoadAt = -1;
661
+ hlsLoadTs = 0;
625
662
  decodeRecoverCount = 0;
626
663
  if (hls) {
627
664
  try {
@@ -780,6 +817,9 @@ var require_ckplayer = __commonJS({
780
817
  if (firstSeekTime < 0) {
781
818
  firstSeekTime = resumeAt;
782
819
  }
820
+ hlsResumeTarget = resumeAt;
821
+ hlsLoadAt = resumeAt;
822
+ hlsLoadTs = Date.now();
783
823
  seekTime = 0;
784
824
  hlsStartPositionUsed = true;
785
825
  clearSeekRetry();
@@ -792,6 +832,21 @@ var require_ckplayer = __commonJS({
792
832
  applyPendingSeek();
793
833
  }
794
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
+ });
795
850
  hls.on(Hls.Events.ERROR, function(event2, data) {
796
851
  var code = 9;
797
852
  var message2 = language["error"]["loadingFailed"];
@@ -1539,14 +1594,9 @@ var require_ckplayer = __commonJS({
1539
1594
  firstSeekTime = t;
1540
1595
  }
1541
1596
  }
1542
- if (hls && typeof hls.startLoad === "function") {
1597
+ if (hlsSeekTo(t, !!force)) {
1543
1598
  clearSeekRetry();
1544
1599
  seekTime = 0;
1545
- try {
1546
- hls.startLoad(t);
1547
- } catch (event2) {
1548
- seekTime = t;
1549
- }
1550
1600
  return;
1551
1601
  }
1552
1602
  var readyEnough = !isUndefined(video.readyState) && video.readyState >= 2;
@@ -2818,13 +2868,8 @@ var require_ckplayer = __commonJS({
2818
2868
  applyPendingSeek(false);
2819
2869
  return player;
2820
2870
  }
2821
- if (hls && typeof hls.startLoad === "function") {
2871
+ if (hlsSeekTo(target, false)) {
2822
2872
  seekTime = 0;
2823
- try {
2824
- hls.startLoad(target);
2825
- } catch (event2) {
2826
- seekTime = target;
2827
- }
2828
2873
  return player;
2829
2874
  }
2830
2875
  try {
@@ -6041,7 +6086,7 @@ var require_ckplayer = __commonJS({
6041
6086
  if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
6042
6087
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
6043
6088
  var m2 = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
6044
- if (cdn && cdn.indexOf("1.0.7") === -1 && m2) {
6089
+ if (cdn && cdn.indexOf("1.0.8") === -1 && m2) {
6045
6090
  if (cdn.slice(-1) !== "/") {
6046
6091
  cdn += "/";
6047
6092
  }
@@ -6853,6 +6898,9 @@ function buildPlayerConfig(input) {
6853
6898
  if (input.pluginPath) {
6854
6899
  config.pluginPath = input.pluginPath;
6855
6900
  }
6901
+ if (input.seek != null && input.seek !== "" && !isNaN(parseFloat(input.seek)) && parseFloat(input.seek) > 0) {
6902
+ config.seek = parseFloat(input.seek);
6903
+ }
6856
6904
  for (var key in opts) {
6857
6905
  if (Object.prototype.hasOwnProperty.call(opts, key) && key !== "container") {
6858
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.7/dist/";
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.7") > -1) {
408
+ if (!allowCdn || !cdn || cdn.indexOf("1.0.8") > -1) {
406
409
  return folder + "/" + file;
407
410
  }
408
411
  if (cdn.slice(-1) !== "/") {
@@ -613,10 +616,44 @@ var require_ckplayer = __commonJS({
613
616
  if (!seekTime) {
614
617
  applyResumeSeekState(parseResumeSeekFromVars());
615
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;
616
650
  }, destroyStreamPlayers = function() {
617
651
  clearSeekRetry();
618
652
  seekApplyLock = false;
619
653
  hlsStartPositionUsed = false;
654
+ hlsResumeTarget = -1;
655
+ hlsLoadAt = -1;
656
+ hlsLoadTs = 0;
620
657
  decodeRecoverCount = 0;
621
658
  if (hls) {
622
659
  try {
@@ -775,6 +812,9 @@ var require_ckplayer = __commonJS({
775
812
  if (firstSeekTime < 0) {
776
813
  firstSeekTime = resumeAt;
777
814
  }
815
+ hlsResumeTarget = resumeAt;
816
+ hlsLoadAt = resumeAt;
817
+ hlsLoadTs = Date.now();
778
818
  seekTime = 0;
779
819
  hlsStartPositionUsed = true;
780
820
  clearSeekRetry();
@@ -787,6 +827,21 @@ var require_ckplayer = __commonJS({
787
827
  applyPendingSeek();
788
828
  }
789
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
+ });
790
845
  hls.on(Hls.Events.ERROR, function(event2, data) {
791
846
  var code = 9;
792
847
  var message2 = language["error"]["loadingFailed"];
@@ -1534,14 +1589,9 @@ var require_ckplayer = __commonJS({
1534
1589
  firstSeekTime = t;
1535
1590
  }
1536
1591
  }
1537
- if (hls && typeof hls.startLoad === "function") {
1592
+ if (hlsSeekTo(t, !!force)) {
1538
1593
  clearSeekRetry();
1539
1594
  seekTime = 0;
1540
- try {
1541
- hls.startLoad(t);
1542
- } catch (event2) {
1543
- seekTime = t;
1544
- }
1545
1595
  return;
1546
1596
  }
1547
1597
  var readyEnough = !isUndefined(video.readyState) && video.readyState >= 2;
@@ -2813,13 +2863,8 @@ var require_ckplayer = __commonJS({
2813
2863
  applyPendingSeek(false);
2814
2864
  return player;
2815
2865
  }
2816
- if (hls && typeof hls.startLoad === "function") {
2866
+ if (hlsSeekTo(target, false)) {
2817
2867
  seekTime = 0;
2818
- try {
2819
- hls.startLoad(target);
2820
- } catch (event2) {
2821
- seekTime = target;
2822
- }
2823
2868
  return player;
2824
2869
  }
2825
2870
  try {
@@ -6036,7 +6081,7 @@ var require_ckplayer = __commonJS({
6036
6081
  if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
6037
6082
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
6038
6083
  var m2 = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
6039
- if (cdn && cdn.indexOf("1.0.7") === -1 && m2) {
6084
+ if (cdn && cdn.indexOf("1.0.8") === -1 && m2) {
6040
6085
  if (cdn.slice(-1) !== "/") {
6041
6086
  cdn += "/";
6042
6087
  }
@@ -6840,6 +6885,9 @@ function buildPlayerConfig(input) {
6840
6885
  if (input.pluginPath) {
6841
6886
  config.pluginPath = input.pluginPath;
6842
6887
  }
6888
+ if (input.seek != null && input.seek !== "" && !isNaN(parseFloat(input.seek)) && parseFloat(input.seek) > 0) {
6889
+ config.seek = parseFloat(input.seek);
6890
+ }
6843
6891
  for (var key in opts) {
6844
6892
  if (Object.prototype.hasOwnProperty.call(opts, key) && key !== "container") {
6845
6893
  config[key] = opts[key];