ckplayer-plus 1.1.6 → 1.1.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
@@ -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.6/dist/";
213
+ var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.1.8/dist/";
214
214
  function ckplayerEmbed(videoObj) {
215
215
  var rightMenu = [
216
216
  {
@@ -246,6 +246,8 @@ var require_ckplayer = __commonJS({
246
246
  var hlsLoadAt = -1;
247
247
  var hlsLoadTs = 0;
248
248
  var hlsScrubResumePlay = false;
249
+ var hlsScrubbing = false;
250
+ var hlsResumeSettling = false;
249
251
  var oldTime = 0, playTime = 0, firstSeekTime = -1, maxSeeTime = 0;
250
252
  var isChangeDef = true;
251
253
  var playType = "";
@@ -433,7 +435,7 @@ var require_ckplayer = __commonJS({
433
435
  }
434
436
  var allowCdn = !vars || vars["cdnFallback"] !== false;
435
437
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
436
- if (!allowCdn || !cdn || cdn.indexOf("1.1.6") > -1) {
438
+ if (!allowCdn || !cdn || cdn.indexOf("1.1.8") > -1) {
437
439
  return folder + "/" + file;
438
440
  }
439
441
  if (cdn.slice(-1) !== "/") {
@@ -695,22 +697,61 @@ var require_ckplayer = __commonJS({
695
697
  if (dur && isFinite(dur) && dur > 0 && target >= dur) {
696
698
  target = Math.max(0, dur - 0.3);
697
699
  }
698
- hlsScrubResumePlay = !paused;
700
+ var wasPlaying = !paused;
701
+ hlsScrubbing = true;
702
+ hlsScrubResumePlay = wasPlaying;
699
703
  clearSeekRetry();
700
704
  hlsResumeWarmup = false;
705
+ hlsResumeSettling = false;
701
706
  hlsResumeTarget = -1;
702
707
  seekTime = 0;
703
708
  seekApplyLock = true;
709
+ if (timeInBuffered(target)) {
710
+ try {
711
+ video.currentTime = target;
712
+ } catch (event2) {
713
+ seekApplyLock = false;
714
+ hlsScrubbing = false;
715
+ return false;
716
+ }
717
+ setTimeout(function() {
718
+ seekApplyLock = false;
719
+ hlsScrubbing = false;
720
+ if (C["buffer"]) {
721
+ C["buffer"].hide();
722
+ }
723
+ waited = true;
724
+ if (wasPlaying) {
725
+ hlsScrubResumePlay = false;
726
+ try {
727
+ player.play();
728
+ } catch (errPlay) {
729
+ }
730
+ } else {
731
+ hlsScrubResumePlay = false;
732
+ }
733
+ }, 80);
734
+ return true;
735
+ }
704
736
  try {
705
737
  video.currentTime = target;
706
738
  } catch (event2) {
707
739
  seekApplyLock = false;
740
+ hlsScrubbing = false;
708
741
  return false;
709
742
  }
710
743
  setTimeout(function() {
711
744
  seekApplyLock = false;
712
745
  }, 120);
713
746
  return true;
747
+ }, hidePlaybackBuffer = function() {
748
+ waited = true;
749
+ if (C["buffer"]) {
750
+ C["buffer"].hide();
751
+ }
752
+ if (C["loading"]) {
753
+ C["loading"].hide();
754
+ }
714
755
  }, destroyStreamPlayers = function() {
715
756
  clearSeekRetry();
716
757
  seekApplyLock = false;
@@ -720,6 +761,8 @@ var require_ckplayer = __commonJS({
720
761
  hlsLoadAt = -1;
721
762
  hlsLoadTs = 0;
722
763
  hlsScrubResumePlay = false;
764
+ hlsScrubbing = false;
765
+ hlsResumeSettling = false;
723
766
  decodeRecoverCount = 0;
724
767
  if (hls) {
725
768
  try {
@@ -876,44 +919,36 @@ var require_ckplayer = __commonJS({
876
919
  resumeAt = parseResumeSeekFromVars();
877
920
  }
878
921
  if (resumeAt && resumeAt > 0 && (isUndefined(vars["live"]) || !vars["live"])) {
922
+ hlsConf.autoStartLoad = false;
879
923
  maxSeeTime = Math.max(maxSeeTime, resumeAt);
880
924
  if (firstSeekTime < 0) {
881
925
  firstSeekTime = resumeAt;
882
926
  }
883
927
  seekTime = resumeAt;
884
928
  hlsResumeTarget = resumeAt;
885
- hlsResumeWarmup = true;
886
- hlsConf.autoStartLoad = false;
929
+ hlsResumeSettling = true;
930
+ hlsResumeWarmup = false;
931
+ autoplayPending = false;
887
932
  }
888
933
  hls = new Hls(hlsConf);
889
934
  hls.loadSource(url);
890
935
  hls.attachMedia(video);
891
936
  hls.on(Hls.Events.MANIFEST_PARSED, function() {
892
- if (hlsResumeWarmup && seekTime > 0) {
893
- var loadAt = hlsPriorLoadTime(seekTime);
894
- hlsLoadAt = loadAt;
895
- hlsLoadTs = Date.now();
937
+ if (seekTime > 0 && hlsResumeSettling) {
896
938
  hlsStartPositionUsed = true;
897
- try {
898
- hls.startLoad(loadAt);
899
- } catch (event2) {
939
+ hlsSeekTo(seekTime, true);
940
+ if (C["buffer"]) {
941
+ C["buffer"].show();
900
942
  }
901
943
  setTimeout(function() {
902
- if (!hlsResumeWarmup || !seekTime) {
903
- return;
904
- }
905
- var target = seekTime;
906
- if (hlsCanSafelySeekTo(target)) {
907
- finishResumeSeek(target);
944
+ if (!hlsResumeSettling) {
908
945
  return;
909
946
  }
910
- var snap = hlsFragStartTime(target);
911
- if (timeInBuffered(snap) || hlsCanSafelySeekTo(snap)) {
912
- finishResumeSeek(snap);
913
- return;
947
+ var t = seekTime > 0 ? seekTime : hlsResumeTarget;
948
+ if (t > 0 && !tryCompleteResumeSeek(t) && hlsResumeSettling) {
949
+ finishResumeSeek(t);
914
950
  }
915
- finishResumeSeek(Math.max(0, loadAt));
916
- }, 5e3);
951
+ }, 8e3);
917
952
  return;
918
953
  }
919
954
  if (!hlsStartPositionUsed) {
@@ -921,10 +956,9 @@ var require_ckplayer = __commonJS({
921
956
  }
922
957
  });
923
958
  hls.on(Hls.Events.FRAG_BUFFERED, function(event2, data) {
924
- if (hlsResumeWarmup && seekTime > 0) {
925
- if (hlsCanSafelySeekTo(seekTime)) {
926
- finishResumeSeek(seekTime);
927
- }
959
+ if (hlsResumeSettling && (seekTime > 0 || hlsResumeTarget > 0)) {
960
+ var resumeT = seekTime > 0 ? seekTime : hlsResumeTarget;
961
+ tryCompleteResumeSeek(resumeT);
928
962
  return;
929
963
  }
930
964
  if (hlsResumeTarget <= 0 || !data || !data.frag) {
@@ -933,12 +967,7 @@ var require_ckplayer = __commonJS({
933
967
  var fragStart = data.frag.start;
934
968
  var fragEnd = fragStart + data.frag.duration;
935
969
  if (hlsResumeTarget >= fragStart - 0.5 && hlsResumeTarget <= fragEnd + 0.5) {
936
- if (!waited) {
937
- waited = true;
938
- if (C["buffer"]) {
939
- C["buffer"].hide();
940
- }
941
- }
970
+ hidePlaybackBuffer();
942
971
  }
943
972
  });
944
973
  hls.on(Hls.Events.ERROR, function(event2, data) {
@@ -957,11 +986,27 @@ var require_ckplayer = __commonJS({
957
986
  }
958
987
  }
959
988
  }
960
- if (fatal && data.type === Hls.ErrorTypes.MEDIA_ERROR && hls && typeof hls.recoverMediaError === "function") {
961
- try {
962
- hls.recoverMediaError();
963
- fatal = false;
964
- } catch (errRecover) {
989
+ if (fatal && hls) {
990
+ if (data.type === Hls.ErrorTypes.NETWORK_ERROR && typeof hls.startLoad === "function") {
991
+ try {
992
+ if (data.details === "keyLoadError") {
993
+ setTimeout(function() {
994
+ if (hls && typeof hls.startLoad === "function") {
995
+ hls.startLoad();
996
+ }
997
+ }, 2e3);
998
+ } else {
999
+ hls.startLoad();
1000
+ }
1001
+ fatal = false;
1002
+ } catch (errNet) {
1003
+ }
1004
+ } else if (data.type === Hls.ErrorTypes.MEDIA_ERROR && typeof hls.recoverMediaError === "function") {
1005
+ try {
1006
+ hls.recoverMediaError();
1007
+ fatal = false;
1008
+ } catch (errRecover) {
1009
+ }
965
1010
  }
966
1011
  }
967
1012
  CT.error = { code, message: message2 };
@@ -1772,8 +1817,18 @@ var require_ckplayer = __commonJS({
1772
1817
  } catch (event2) {
1773
1818
  }
1774
1819
  return false;
1820
+ }, tryCompleteResumeSeek = function(t) {
1821
+ if (!hlsResumeSettling || isNaN(t) || t <= 0 || !video) {
1822
+ return false;
1823
+ }
1824
+ if (hlsCanSafelySeekTo(t)) {
1825
+ finishResumeSeek(t);
1826
+ return true;
1827
+ }
1828
+ return false;
1775
1829
  }, finishResumeSeek = function(t) {
1776
1830
  hlsResumeWarmup = false;
1831
+ hlsResumeSettling = false;
1777
1832
  autoplayPending = false;
1778
1833
  applySeekToMedia(t);
1779
1834
  setTimeout(function() {
@@ -1785,10 +1840,7 @@ var require_ckplayer = __commonJS({
1785
1840
  } catch (event2) {
1786
1841
  }
1787
1842
  paused = true;
1788
- if (C["buffer"]) {
1789
- C["buffer"].hide();
1790
- }
1791
- waited = true;
1843
+ hidePlaybackBuffer();
1792
1844
  if (!vars["controls"] && C["centerPlay"]) {
1793
1845
  C["centerPlay"].show();
1794
1846
  }
@@ -1838,6 +1890,7 @@ var require_ckplayer = __commonJS({
1838
1890
  if (t <= 0) {
1839
1891
  seekTime = 0;
1840
1892
  clearSeekRetry();
1893
+ hlsResumeSettling = false;
1841
1894
  return;
1842
1895
  }
1843
1896
  if (t > 0) {
@@ -1846,42 +1899,36 @@ var require_ckplayer = __commonJS({
1846
1899
  firstSeekTime = t;
1847
1900
  }
1848
1901
  }
1849
- if (hls && typeof hls.startLoad === "function") {
1850
- if (hlsCanSafelySeekTo(t)) {
1851
- finishResumeSeek(t);
1902
+ if (hls) {
1903
+ hlsResumeSettling = true;
1904
+ hlsResumeTarget = t;
1905
+ autoplayPending = false;
1906
+ if (hlsResumeWarmup) {
1852
1907
  return;
1853
1908
  }
1854
- if (t > 1) {
1855
- hlsResumeWarmup = true;
1856
- hlsResumeTarget = t;
1857
- var loadAt = hlsPriorLoadTime(t);
1858
- var shouldLoad = !!force;
1859
- if (!shouldLoad) {
1860
- if (!(hlsLoadAt >= 0 && Math.abs(hlsLoadAt - loadAt) < 1.5 && Date.now() - hlsLoadTs < 4e3)) {
1861
- shouldLoad = true;
1862
- }
1863
- }
1864
- if (shouldLoad) {
1865
- hlsLoadAt = loadAt;
1866
- hlsLoadTs = Date.now();
1867
- try {
1868
- hls.startLoad(loadAt);
1869
- } catch (event2) {
1870
- }
1909
+ if (tryCompleteResumeSeek(t)) {
1910
+ return;
1911
+ }
1912
+ if (hlsSeekTo(t, force)) {
1913
+ if (C["buffer"]) {
1914
+ C["buffer"].show();
1871
1915
  }
1916
+ return;
1917
+ }
1918
+ if (!force && (!isUndefined(video.readyState) && video.readyState < 1) && !(dur && isFinite(dur) && dur > 0)) {
1872
1919
  seekRetryCount++;
1873
- if (seekRetryCount <= 50) {
1920
+ if (seekRetryCount <= 40) {
1874
1921
  if (seekRetryTimer) {
1875
1922
  clearTimeout(seekRetryTimer);
1876
1923
  }
1877
1924
  seekRetryTimer = setTimeout(function() {
1878
1925
  applyPendingSeek(false);
1879
- }, 200);
1926
+ }, 120);
1880
1927
  return;
1881
1928
  }
1882
- finishResumeSeek(hlsFragStartTime(t) || loadAt || t);
1883
- return;
1884
1929
  }
1930
+ finishResumeSeek(t);
1931
+ return;
1885
1932
  }
1886
1933
  if (!force && (!isUndefined(video.readyState) && video.readyState < 1)) {
1887
1934
  seekRetryCount++;
@@ -1985,6 +2032,7 @@ var require_ckplayer = __commonJS({
1985
2032
  },
1986
2033
  canPlay: function() {
1987
2034
  C["loading"].hide();
2035
+ hidePlaybackBuffer();
1988
2036
  eventTarget("canplay");
1989
2037
  applyPendingSeek();
1990
2038
  startPendingAutoplay();
@@ -2175,12 +2223,11 @@ var require_ckplayer = __commonJS({
2175
2223
  seeked: function() {
2176
2224
  seekApplyLock = false;
2177
2225
  decodeRecoverCount = 0;
2226
+ hlsScrubbing = false;
2227
+ hlsResumeSettling = false;
2178
2228
  startPendingAutoplay();
2179
2229
  pSliderMouseDown = false;
2180
- waited = true;
2181
- if (C["buffer"]) {
2182
- C["buffer"].hide();
2183
- }
2230
+ hidePlaybackBuffer();
2184
2231
  if (hlsScrubResumePlay) {
2185
2232
  hlsScrubResumePlay = false;
2186
2233
  try {
@@ -2192,54 +2239,56 @@ var require_ckplayer = __commonJS({
2192
2239
  eventTarget("seeked");
2193
2240
  },
2194
2241
  seeking: function() {
2195
- if (paused && !seekApplyLock && !hlsResumeWarmup && !seekTime && !autoplayPending) {
2242
+ if (paused && !seekApplyLock && !hlsResumeWarmup && !hlsResumeSettling && !hlsScrubbing && !seekTime && !autoplayPending) {
2196
2243
  player.play();
2197
2244
  }
2198
2245
  var seekingTime = this.currentTime;
2199
2246
  if (firstSeekTime == -1) {
2200
2247
  firstSeekTime = seekingTime;
2201
2248
  }
2202
- switch (vars["timeScheduleAdjust"]) {
2203
- case 0:
2204
- if (oldTime != seekingTime) {
2205
- waitingMessage = false;
2206
- player.seek(oldTime);
2207
- message(language["timeScheduleAdjust"]["prohibit"]);
2208
- return;
2209
- }
2210
- break;
2211
- case 2:
2212
- if (seekingTime < oldTime) {
2213
- waitingMessage = false;
2214
- player.seek(oldTime);
2215
- message(language["timeScheduleAdjust"]["prohibitBackOff"]);
2216
- return;
2217
- }
2218
- break;
2219
- case 3:
2220
- if (seekingTime > oldTime) {
2221
- waitingMessage = false;
2222
- player.seek(oldTime);
2223
- message(language["timeScheduleAdjust"]["prohibitForward"]);
2224
- return;
2225
- }
2226
- break;
2227
- case 4:
2228
- if (seekingTime < firstSeekTime) {
2229
- waitingMessage = false;
2230
- player.seek(firstSeekTime);
2231
- message(language["timeScheduleAdjust"]["prohibitLookBack"]);
2232
- return;
2233
- }
2234
- break;
2235
- case 5:
2236
- if (seekingTime > maxSeeTime) {
2237
- waitingMessage = false;
2238
- player.seek(maxSeeTime);
2239
- message(language["timeScheduleAdjust"]["prohibitForwardNotViewed"]);
2240
- return;
2241
- }
2242
- break;
2249
+ if (!(hlsScrubbing || hlsScrubResumePlay || hlsResumeSettling || hlsResumeWarmup)) {
2250
+ switch (vars["timeScheduleAdjust"]) {
2251
+ case 0:
2252
+ if (oldTime != seekingTime) {
2253
+ waitingMessage = false;
2254
+ player.seek(oldTime);
2255
+ message(language["timeScheduleAdjust"]["prohibit"]);
2256
+ return;
2257
+ }
2258
+ break;
2259
+ case 2:
2260
+ if (seekingTime < oldTime) {
2261
+ waitingMessage = false;
2262
+ player.seek(oldTime);
2263
+ message(language["timeScheduleAdjust"]["prohibitBackOff"]);
2264
+ return;
2265
+ }
2266
+ break;
2267
+ case 3:
2268
+ if (seekingTime > oldTime) {
2269
+ waitingMessage = false;
2270
+ player.seek(oldTime);
2271
+ message(language["timeScheduleAdjust"]["prohibitForward"]);
2272
+ return;
2273
+ }
2274
+ break;
2275
+ case 4:
2276
+ if (seekingTime < firstSeekTime) {
2277
+ waitingMessage = false;
2278
+ player.seek(firstSeekTime);
2279
+ message(language["timeScheduleAdjust"]["prohibitLookBack"]);
2280
+ return;
2281
+ }
2282
+ break;
2283
+ case 5:
2284
+ if (seekingTime > maxSeeTime) {
2285
+ waitingMessage = false;
2286
+ player.seek(maxSeeTime);
2287
+ message(language["timeScheduleAdjust"]["prohibitForwardNotViewed"]);
2288
+ return;
2289
+ }
2290
+ break;
2291
+ }
2243
2292
  }
2244
2293
  eventTarget("seek", { time: seekingTime, state: "seeking" });
2245
2294
  eventTarget("seeking");
@@ -2251,10 +2300,15 @@ var require_ckplayer = __commonJS({
2251
2300
  waiting: function() {
2252
2301
  waited = false;
2253
2302
  eventTarget("buffer", "start");
2254
- C["centerPlay"].hide();
2303
+ if (!(hlsScrubbing || hlsScrubResumePlay || hlsResumeSettling)) {
2304
+ C["centerPlay"].hide();
2305
+ }
2255
2306
  if (!vars["controls"]) {
2256
2307
  C["buffer"].show();
2257
2308
  }
2309
+ if (hlsScrubbing || hlsScrubResumePlay || hlsResumeSettling) {
2310
+ return;
2311
+ }
2258
2312
  if (!waitingMessage) {
2259
2313
  waitingMessage = true;
2260
2314
  } else {
@@ -2267,6 +2321,7 @@ var require_ckplayer = __commonJS({
2267
2321
  C["bar"]["playAndPause"]["pause"].show();
2268
2322
  C["bar"]["playAndPause"]["refresh"].hide();
2269
2323
  C["centerPlay"].hide();
2324
+ hidePlaybackBuffer();
2270
2325
  if (playType == "button") {
2271
2326
  C["bar"]["pbox"].removeClass("ck-bar-progress-out");
2272
2327
  } else {
@@ -4985,6 +5040,7 @@ var require_ckplayer = __commonJS({
4985
5040
  e = e || window.event;
4986
5041
  var eleOffset = slider.offset(), bgOffset = bg.offset(), client = getClient(e);
4987
5042
  pSliderMouseDown = true;
5043
+ hlsScrubbing = true;
4988
5044
  posRecord = client["x"];
4989
5045
  var left = eleOffset["left"] - bgOffset["left"];
4990
5046
  sliderDownTime = left * duration / (bg.getWidth() - slider.getWidth());
@@ -5080,6 +5136,11 @@ var require_ckplayer = __commonJS({
5080
5136
  eventTarget("playback", { time: playbackTime2, date: date("Y-m-d H:i:s", playbackTime2) });
5081
5137
  eventTarget("seek", { time: playbackTime2, state: "seeking", date: date("Y-m-d H:i:s", playbackTime2) });
5082
5138
  }
5139
+ setTimeout(function() {
5140
+ if (!pSliderMouseDown) {
5141
+ hlsScrubbing = false;
5142
+ }
5143
+ }, 800);
5083
5144
  C["bar"]["pbox"].removeClass("ck-bar-progress-slider-move");
5084
5145
  if (isMouseLeave) {
5085
5146
  tip();
@@ -6381,7 +6442,7 @@ var require_ckplayer = __commonJS({
6381
6442
  if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
6382
6443
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
6383
6444
  var m = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
6384
- if (cdn && cdn.indexOf("1.1.6") === -1 && m) {
6445
+ if (cdn && cdn.indexOf("1.1.8") === -1 && m) {
6385
6446
  if (cdn.slice(-1) !== "/") {
6386
6447
  cdn += "/";
6387
6448
  }