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.js CHANGED
@@ -204,7 +204,7 @@ var require_ckplayer = __commonJS({
204
204
  cdnFallback: true
205
205
  // getPath 失败时是否回退到 jsDelivr(内网可设 false,并配置 pluginPath)
206
206
  };
207
- var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.1.6/dist/";
207
+ var ckplayerPlusDefaultCdn = "https://cdn.jsdelivr.net/npm/ckplayer-plus@1.1.8/dist/";
208
208
  function ckplayerEmbed(videoObj) {
209
209
  var rightMenu = [
210
210
  {
@@ -240,6 +240,8 @@ var require_ckplayer = __commonJS({
240
240
  var hlsLoadAt = -1;
241
241
  var hlsLoadTs = 0;
242
242
  var hlsScrubResumePlay = false;
243
+ var hlsScrubbing = false;
244
+ var hlsResumeSettling = false;
243
245
  var oldTime = 0, playTime = 0, firstSeekTime = -1, maxSeeTime = 0;
244
246
  var isChangeDef = true;
245
247
  var playType = "";
@@ -427,7 +429,7 @@ var require_ckplayer = __commonJS({
427
429
  }
428
430
  var allowCdn = !vars || vars["cdnFallback"] !== false;
429
431
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
430
- if (!allowCdn || !cdn || cdn.indexOf("1.1.6") > -1) {
432
+ if (!allowCdn || !cdn || cdn.indexOf("1.1.8") > -1) {
431
433
  return folder + "/" + file;
432
434
  }
433
435
  if (cdn.slice(-1) !== "/") {
@@ -689,22 +691,61 @@ var require_ckplayer = __commonJS({
689
691
  if (dur && isFinite(dur) && dur > 0 && target >= dur) {
690
692
  target = Math.max(0, dur - 0.3);
691
693
  }
692
- hlsScrubResumePlay = !paused;
694
+ var wasPlaying = !paused;
695
+ hlsScrubbing = true;
696
+ hlsScrubResumePlay = wasPlaying;
693
697
  clearSeekRetry();
694
698
  hlsResumeWarmup = false;
699
+ hlsResumeSettling = false;
695
700
  hlsResumeTarget = -1;
696
701
  seekTime = 0;
697
702
  seekApplyLock = true;
703
+ if (timeInBuffered(target)) {
704
+ try {
705
+ video.currentTime = target;
706
+ } catch (event2) {
707
+ seekApplyLock = false;
708
+ hlsScrubbing = false;
709
+ return false;
710
+ }
711
+ setTimeout(function() {
712
+ seekApplyLock = false;
713
+ hlsScrubbing = false;
714
+ if (C["buffer"]) {
715
+ C["buffer"].hide();
716
+ }
717
+ waited = true;
718
+ if (wasPlaying) {
719
+ hlsScrubResumePlay = false;
720
+ try {
721
+ player.play();
722
+ } catch (errPlay) {
723
+ }
724
+ } else {
725
+ hlsScrubResumePlay = false;
726
+ }
727
+ }, 80);
728
+ return true;
729
+ }
698
730
  try {
699
731
  video.currentTime = target;
700
732
  } catch (event2) {
701
733
  seekApplyLock = false;
734
+ hlsScrubbing = false;
702
735
  return false;
703
736
  }
704
737
  setTimeout(function() {
705
738
  seekApplyLock = false;
706
739
  }, 120);
707
740
  return true;
741
+ }, hidePlaybackBuffer = function() {
742
+ waited = true;
743
+ if (C["buffer"]) {
744
+ C["buffer"].hide();
745
+ }
746
+ if (C["loading"]) {
747
+ C["loading"].hide();
748
+ }
708
749
  }, destroyStreamPlayers = function() {
709
750
  clearSeekRetry();
710
751
  seekApplyLock = false;
@@ -714,6 +755,8 @@ var require_ckplayer = __commonJS({
714
755
  hlsLoadAt = -1;
715
756
  hlsLoadTs = 0;
716
757
  hlsScrubResumePlay = false;
758
+ hlsScrubbing = false;
759
+ hlsResumeSettling = false;
717
760
  decodeRecoverCount = 0;
718
761
  if (hls) {
719
762
  try {
@@ -870,44 +913,36 @@ var require_ckplayer = __commonJS({
870
913
  resumeAt = parseResumeSeekFromVars();
871
914
  }
872
915
  if (resumeAt && resumeAt > 0 && (isUndefined(vars["live"]) || !vars["live"])) {
916
+ hlsConf.autoStartLoad = false;
873
917
  maxSeeTime = Math.max(maxSeeTime, resumeAt);
874
918
  if (firstSeekTime < 0) {
875
919
  firstSeekTime = resumeAt;
876
920
  }
877
921
  seekTime = resumeAt;
878
922
  hlsResumeTarget = resumeAt;
879
- hlsResumeWarmup = true;
880
- hlsConf.autoStartLoad = false;
923
+ hlsResumeSettling = true;
924
+ hlsResumeWarmup = false;
925
+ autoplayPending = false;
881
926
  }
882
927
  hls = new Hls(hlsConf);
883
928
  hls.loadSource(url);
884
929
  hls.attachMedia(video);
885
930
  hls.on(Hls.Events.MANIFEST_PARSED, function() {
886
- if (hlsResumeWarmup && seekTime > 0) {
887
- var loadAt = hlsPriorLoadTime(seekTime);
888
- hlsLoadAt = loadAt;
889
- hlsLoadTs = Date.now();
931
+ if (seekTime > 0 && hlsResumeSettling) {
890
932
  hlsStartPositionUsed = true;
891
- try {
892
- hls.startLoad(loadAt);
893
- } catch (event2) {
933
+ hlsSeekTo(seekTime, true);
934
+ if (C["buffer"]) {
935
+ C["buffer"].show();
894
936
  }
895
937
  setTimeout(function() {
896
- if (!hlsResumeWarmup || !seekTime) {
897
- return;
898
- }
899
- var target = seekTime;
900
- if (hlsCanSafelySeekTo(target)) {
901
- finishResumeSeek(target);
938
+ if (!hlsResumeSettling) {
902
939
  return;
903
940
  }
904
- var snap = hlsFragStartTime(target);
905
- if (timeInBuffered(snap) || hlsCanSafelySeekTo(snap)) {
906
- finishResumeSeek(snap);
907
- return;
941
+ var t = seekTime > 0 ? seekTime : hlsResumeTarget;
942
+ if (t > 0 && !tryCompleteResumeSeek(t) && hlsResumeSettling) {
943
+ finishResumeSeek(t);
908
944
  }
909
- finishResumeSeek(Math.max(0, loadAt));
910
- }, 5e3);
945
+ }, 8e3);
911
946
  return;
912
947
  }
913
948
  if (!hlsStartPositionUsed) {
@@ -915,10 +950,9 @@ var require_ckplayer = __commonJS({
915
950
  }
916
951
  });
917
952
  hls.on(Hls.Events.FRAG_BUFFERED, function(event2, data) {
918
- if (hlsResumeWarmup && seekTime > 0) {
919
- if (hlsCanSafelySeekTo(seekTime)) {
920
- finishResumeSeek(seekTime);
921
- }
953
+ if (hlsResumeSettling && (seekTime > 0 || hlsResumeTarget > 0)) {
954
+ var resumeT = seekTime > 0 ? seekTime : hlsResumeTarget;
955
+ tryCompleteResumeSeek(resumeT);
922
956
  return;
923
957
  }
924
958
  if (hlsResumeTarget <= 0 || !data || !data.frag) {
@@ -927,12 +961,7 @@ var require_ckplayer = __commonJS({
927
961
  var fragStart = data.frag.start;
928
962
  var fragEnd = fragStart + data.frag.duration;
929
963
  if (hlsResumeTarget >= fragStart - 0.5 && hlsResumeTarget <= fragEnd + 0.5) {
930
- if (!waited) {
931
- waited = true;
932
- if (C["buffer"]) {
933
- C["buffer"].hide();
934
- }
935
- }
964
+ hidePlaybackBuffer();
936
965
  }
937
966
  });
938
967
  hls.on(Hls.Events.ERROR, function(event2, data) {
@@ -951,11 +980,27 @@ var require_ckplayer = __commonJS({
951
980
  }
952
981
  }
953
982
  }
954
- if (fatal && data.type === Hls.ErrorTypes.MEDIA_ERROR && hls && typeof hls.recoverMediaError === "function") {
955
- try {
956
- hls.recoverMediaError();
957
- fatal = false;
958
- } catch (errRecover) {
983
+ if (fatal && hls) {
984
+ if (data.type === Hls.ErrorTypes.NETWORK_ERROR && typeof hls.startLoad === "function") {
985
+ try {
986
+ if (data.details === "keyLoadError") {
987
+ setTimeout(function() {
988
+ if (hls && typeof hls.startLoad === "function") {
989
+ hls.startLoad();
990
+ }
991
+ }, 2e3);
992
+ } else {
993
+ hls.startLoad();
994
+ }
995
+ fatal = false;
996
+ } catch (errNet) {
997
+ }
998
+ } else if (data.type === Hls.ErrorTypes.MEDIA_ERROR && typeof hls.recoverMediaError === "function") {
999
+ try {
1000
+ hls.recoverMediaError();
1001
+ fatal = false;
1002
+ } catch (errRecover) {
1003
+ }
959
1004
  }
960
1005
  }
961
1006
  CT.error = { code, message: message2 };
@@ -1766,8 +1811,18 @@ var require_ckplayer = __commonJS({
1766
1811
  } catch (event2) {
1767
1812
  }
1768
1813
  return false;
1814
+ }, tryCompleteResumeSeek = function(t) {
1815
+ if (!hlsResumeSettling || isNaN(t) || t <= 0 || !video) {
1816
+ return false;
1817
+ }
1818
+ if (hlsCanSafelySeekTo(t)) {
1819
+ finishResumeSeek(t);
1820
+ return true;
1821
+ }
1822
+ return false;
1769
1823
  }, finishResumeSeek = function(t) {
1770
1824
  hlsResumeWarmup = false;
1825
+ hlsResumeSettling = false;
1771
1826
  autoplayPending = false;
1772
1827
  applySeekToMedia(t);
1773
1828
  setTimeout(function() {
@@ -1779,10 +1834,7 @@ var require_ckplayer = __commonJS({
1779
1834
  } catch (event2) {
1780
1835
  }
1781
1836
  paused = true;
1782
- if (C["buffer"]) {
1783
- C["buffer"].hide();
1784
- }
1785
- waited = true;
1837
+ hidePlaybackBuffer();
1786
1838
  if (!vars["controls"] && C["centerPlay"]) {
1787
1839
  C["centerPlay"].show();
1788
1840
  }
@@ -1832,6 +1884,7 @@ var require_ckplayer = __commonJS({
1832
1884
  if (t <= 0) {
1833
1885
  seekTime = 0;
1834
1886
  clearSeekRetry();
1887
+ hlsResumeSettling = false;
1835
1888
  return;
1836
1889
  }
1837
1890
  if (t > 0) {
@@ -1840,42 +1893,36 @@ var require_ckplayer = __commonJS({
1840
1893
  firstSeekTime = t;
1841
1894
  }
1842
1895
  }
1843
- if (hls && typeof hls.startLoad === "function") {
1844
- if (hlsCanSafelySeekTo(t)) {
1845
- finishResumeSeek(t);
1896
+ if (hls) {
1897
+ hlsResumeSettling = true;
1898
+ hlsResumeTarget = t;
1899
+ autoplayPending = false;
1900
+ if (hlsResumeWarmup) {
1846
1901
  return;
1847
1902
  }
1848
- if (t > 1) {
1849
- hlsResumeWarmup = true;
1850
- hlsResumeTarget = t;
1851
- var loadAt = hlsPriorLoadTime(t);
1852
- var shouldLoad = !!force;
1853
- if (!shouldLoad) {
1854
- if (!(hlsLoadAt >= 0 && Math.abs(hlsLoadAt - loadAt) < 1.5 && Date.now() - hlsLoadTs < 4e3)) {
1855
- shouldLoad = true;
1856
- }
1857
- }
1858
- if (shouldLoad) {
1859
- hlsLoadAt = loadAt;
1860
- hlsLoadTs = Date.now();
1861
- try {
1862
- hls.startLoad(loadAt);
1863
- } catch (event2) {
1864
- }
1903
+ if (tryCompleteResumeSeek(t)) {
1904
+ return;
1905
+ }
1906
+ if (hlsSeekTo(t, force)) {
1907
+ if (C["buffer"]) {
1908
+ C["buffer"].show();
1865
1909
  }
1910
+ return;
1911
+ }
1912
+ if (!force && (!isUndefined(video.readyState) && video.readyState < 1) && !(dur && isFinite(dur) && dur > 0)) {
1866
1913
  seekRetryCount++;
1867
- if (seekRetryCount <= 50) {
1914
+ if (seekRetryCount <= 40) {
1868
1915
  if (seekRetryTimer) {
1869
1916
  clearTimeout(seekRetryTimer);
1870
1917
  }
1871
1918
  seekRetryTimer = setTimeout(function() {
1872
1919
  applyPendingSeek(false);
1873
- }, 200);
1920
+ }, 120);
1874
1921
  return;
1875
1922
  }
1876
- finishResumeSeek(hlsFragStartTime(t) || loadAt || t);
1877
- return;
1878
1923
  }
1924
+ finishResumeSeek(t);
1925
+ return;
1879
1926
  }
1880
1927
  if (!force && (!isUndefined(video.readyState) && video.readyState < 1)) {
1881
1928
  seekRetryCount++;
@@ -1979,6 +2026,7 @@ var require_ckplayer = __commonJS({
1979
2026
  },
1980
2027
  canPlay: function() {
1981
2028
  C["loading"].hide();
2029
+ hidePlaybackBuffer();
1982
2030
  eventTarget("canplay");
1983
2031
  applyPendingSeek();
1984
2032
  startPendingAutoplay();
@@ -2169,12 +2217,11 @@ var require_ckplayer = __commonJS({
2169
2217
  seeked: function() {
2170
2218
  seekApplyLock = false;
2171
2219
  decodeRecoverCount = 0;
2220
+ hlsScrubbing = false;
2221
+ hlsResumeSettling = false;
2172
2222
  startPendingAutoplay();
2173
2223
  pSliderMouseDown = false;
2174
- waited = true;
2175
- if (C["buffer"]) {
2176
- C["buffer"].hide();
2177
- }
2224
+ hidePlaybackBuffer();
2178
2225
  if (hlsScrubResumePlay) {
2179
2226
  hlsScrubResumePlay = false;
2180
2227
  try {
@@ -2186,54 +2233,56 @@ var require_ckplayer = __commonJS({
2186
2233
  eventTarget("seeked");
2187
2234
  },
2188
2235
  seeking: function() {
2189
- if (paused && !seekApplyLock && !hlsResumeWarmup && !seekTime && !autoplayPending) {
2236
+ if (paused && !seekApplyLock && !hlsResumeWarmup && !hlsResumeSettling && !hlsScrubbing && !seekTime && !autoplayPending) {
2190
2237
  player.play();
2191
2238
  }
2192
2239
  var seekingTime = this.currentTime;
2193
2240
  if (firstSeekTime == -1) {
2194
2241
  firstSeekTime = seekingTime;
2195
2242
  }
2196
- switch (vars["timeScheduleAdjust"]) {
2197
- case 0:
2198
- if (oldTime != seekingTime) {
2199
- waitingMessage = false;
2200
- player.seek(oldTime);
2201
- message(language["timeScheduleAdjust"]["prohibit"]);
2202
- return;
2203
- }
2204
- break;
2205
- case 2:
2206
- if (seekingTime < oldTime) {
2207
- waitingMessage = false;
2208
- player.seek(oldTime);
2209
- message(language["timeScheduleAdjust"]["prohibitBackOff"]);
2210
- return;
2211
- }
2212
- break;
2213
- case 3:
2214
- if (seekingTime > oldTime) {
2215
- waitingMessage = false;
2216
- player.seek(oldTime);
2217
- message(language["timeScheduleAdjust"]["prohibitForward"]);
2218
- return;
2219
- }
2220
- break;
2221
- case 4:
2222
- if (seekingTime < firstSeekTime) {
2223
- waitingMessage = false;
2224
- player.seek(firstSeekTime);
2225
- message(language["timeScheduleAdjust"]["prohibitLookBack"]);
2226
- return;
2227
- }
2228
- break;
2229
- case 5:
2230
- if (seekingTime > maxSeeTime) {
2231
- waitingMessage = false;
2232
- player.seek(maxSeeTime);
2233
- message(language["timeScheduleAdjust"]["prohibitForwardNotViewed"]);
2234
- return;
2235
- }
2236
- break;
2243
+ if (!(hlsScrubbing || hlsScrubResumePlay || hlsResumeSettling || hlsResumeWarmup)) {
2244
+ switch (vars["timeScheduleAdjust"]) {
2245
+ case 0:
2246
+ if (oldTime != seekingTime) {
2247
+ waitingMessage = false;
2248
+ player.seek(oldTime);
2249
+ message(language["timeScheduleAdjust"]["prohibit"]);
2250
+ return;
2251
+ }
2252
+ break;
2253
+ case 2:
2254
+ if (seekingTime < oldTime) {
2255
+ waitingMessage = false;
2256
+ player.seek(oldTime);
2257
+ message(language["timeScheduleAdjust"]["prohibitBackOff"]);
2258
+ return;
2259
+ }
2260
+ break;
2261
+ case 3:
2262
+ if (seekingTime > oldTime) {
2263
+ waitingMessage = false;
2264
+ player.seek(oldTime);
2265
+ message(language["timeScheduleAdjust"]["prohibitForward"]);
2266
+ return;
2267
+ }
2268
+ break;
2269
+ case 4:
2270
+ if (seekingTime < firstSeekTime) {
2271
+ waitingMessage = false;
2272
+ player.seek(firstSeekTime);
2273
+ message(language["timeScheduleAdjust"]["prohibitLookBack"]);
2274
+ return;
2275
+ }
2276
+ break;
2277
+ case 5:
2278
+ if (seekingTime > maxSeeTime) {
2279
+ waitingMessage = false;
2280
+ player.seek(maxSeeTime);
2281
+ message(language["timeScheduleAdjust"]["prohibitForwardNotViewed"]);
2282
+ return;
2283
+ }
2284
+ break;
2285
+ }
2237
2286
  }
2238
2287
  eventTarget("seek", { time: seekingTime, state: "seeking" });
2239
2288
  eventTarget("seeking");
@@ -2245,10 +2294,15 @@ var require_ckplayer = __commonJS({
2245
2294
  waiting: function() {
2246
2295
  waited = false;
2247
2296
  eventTarget("buffer", "start");
2248
- C["centerPlay"].hide();
2297
+ if (!(hlsScrubbing || hlsScrubResumePlay || hlsResumeSettling)) {
2298
+ C["centerPlay"].hide();
2299
+ }
2249
2300
  if (!vars["controls"]) {
2250
2301
  C["buffer"].show();
2251
2302
  }
2303
+ if (hlsScrubbing || hlsScrubResumePlay || hlsResumeSettling) {
2304
+ return;
2305
+ }
2252
2306
  if (!waitingMessage) {
2253
2307
  waitingMessage = true;
2254
2308
  } else {
@@ -2261,6 +2315,7 @@ var require_ckplayer = __commonJS({
2261
2315
  C["bar"]["playAndPause"]["pause"].show();
2262
2316
  C["bar"]["playAndPause"]["refresh"].hide();
2263
2317
  C["centerPlay"].hide();
2318
+ hidePlaybackBuffer();
2264
2319
  if (playType == "button") {
2265
2320
  C["bar"]["pbox"].removeClass("ck-bar-progress-out");
2266
2321
  } else {
@@ -4979,6 +5034,7 @@ var require_ckplayer = __commonJS({
4979
5034
  e = e || window.event;
4980
5035
  var eleOffset = slider.offset(), bgOffset = bg.offset(), client = getClient(e);
4981
5036
  pSliderMouseDown = true;
5037
+ hlsScrubbing = true;
4982
5038
  posRecord = client["x"];
4983
5039
  var left = eleOffset["left"] - bgOffset["left"];
4984
5040
  sliderDownTime = left * duration / (bg.getWidth() - slider.getWidth());
@@ -5074,6 +5130,11 @@ var require_ckplayer = __commonJS({
5074
5130
  eventTarget("playback", { time: playbackTime2, date: date("Y-m-d H:i:s", playbackTime2) });
5075
5131
  eventTarget("seek", { time: playbackTime2, state: "seeking", date: date("Y-m-d H:i:s", playbackTime2) });
5076
5132
  }
5133
+ setTimeout(function() {
5134
+ if (!pSliderMouseDown) {
5135
+ hlsScrubbing = false;
5136
+ }
5137
+ }, 800);
5077
5138
  C["bar"]["pbox"].removeClass("ck-bar-progress-slider-move");
5078
5139
  if (isMouseLeave) {
5079
5140
  tip();
@@ -6375,7 +6436,7 @@ var require_ckplayer = __commonJS({
6375
6436
  if (!isRetry && (!vars || vars["cdnFallback"] !== false)) {
6376
6437
  var cdn = typeof window !== "undefined" && window.ckplayerPlusCdn ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
6377
6438
  var m = String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
6378
- if (cdn && cdn.indexOf("1.1.6") === -1 && m) {
6439
+ if (cdn && cdn.indexOf("1.1.8") === -1 && m) {
6379
6440
  if (cdn.slice(-1) !== "/") {
6380
6441
  cdn += "/";
6381
6442
  }