ckplayer-plus 1.1.4 → 1.1.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/ckplayer.js +65 -16
- package/dist/ckplayer.min.js +2 -2
- package/dist/index.cjs +55 -15
- package/dist/index.js +55 -15
- package/dist/react.cjs +55 -15
- package/dist/react.js +55 -15
- package/dist/vue.cjs +55 -15
- package/dist/vue.js +55 -15
- package/package.json +1 -1
package/dist/ckplayer.js
CHANGED
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
cdnFallback:true// getPath 失败时是否回退到 jsDelivr(内网可设 false,并配置 pluginPath)
|
|
142
142
|
};
|
|
143
143
|
// 打包时替换为真实版本;用于 bundler 下 getPath 失效时的 CDN 回退
|
|
144
|
-
var ckplayerPlusDefaultCdn='https://cdn.jsdelivr.net/npm/ckplayer-plus@1.1.
|
|
144
|
+
var ckplayerPlusDefaultCdn='https://cdn.jsdelivr.net/npm/ckplayer-plus@1.1.6/dist/';
|
|
145
145
|
function ckplayerEmbed(videoObj){
|
|
146
146
|
/*
|
|
147
147
|
* rightMenu
|
|
@@ -181,6 +181,7 @@
|
|
|
181
181
|
var hlsResumeWarmup=false;//HLS 续播先预热首个可解码分片,再定位目标时间
|
|
182
182
|
var hlsLoadAt=-1;//最近一次 hls.startLoad 目标
|
|
183
183
|
var hlsLoadTs=0;//最近一次 hls.startLoad 时间戳
|
|
184
|
+
var hlsScrubResumePlay=false;//用户拖动后是否需要在 seeked 时恢复播放
|
|
184
185
|
var oldTime=0,playTime=0,firstSeekTime=-1,maxSeeTime=0;//oldTime=记录上次播放时间,playTime=当前播放时间,firstSeekTime=记录第一次拖动的时间,maxSeeTime=看过的最大时间
|
|
185
186
|
var isChangeDef=true;//是否需要重置清晰度
|
|
186
187
|
var playType='';//播放类别,默认='',是通过api接口播放,='button'则判定是通过点击按钮播放
|
|
@@ -446,7 +447,7 @@
|
|
|
446
447
|
}
|
|
447
448
|
var allowCdn=!vars || vars['cdnFallback']!==false;
|
|
448
449
|
var cdn=(typeof window!=='undefined' && window.ckplayerPlusCdn) ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
449
|
-
if(!allowCdn || !cdn || cdn.indexOf('1.1.
|
|
450
|
+
if(!allowCdn || !cdn || cdn.indexOf('1.1.6')>-1){
|
|
450
451
|
// 避免占位版本或显式关闭 CDN 时请求坏地址;交给相对路径或业务 pluginPath
|
|
451
452
|
return folder+'/'+file;
|
|
452
453
|
}
|
|
@@ -818,6 +819,41 @@
|
|
|
818
819
|
}
|
|
819
820
|
return true;
|
|
820
821
|
},
|
|
822
|
+
/*
|
|
823
|
+
* hlsInteractiveSeek
|
|
824
|
+
* 功能:用户拖动/点击进度条时的 HLS 跳转
|
|
825
|
+
* 对齐 EZ/标准 hls.js 做法:只改 video.currentTime,由 hls.js 内部响应 seeking 拉片。
|
|
826
|
+
* 禁止再手动 startLoad,否则会与内部加载竞态、取消 .ts 并永久转圈。
|
|
827
|
+
*/
|
|
828
|
+
hlsInteractiveSeek=function(target){
|
|
829
|
+
if(!hls || !video){
|
|
830
|
+
return false;
|
|
831
|
+
}
|
|
832
|
+
if(isNaN(target) || target<0){
|
|
833
|
+
target=0;
|
|
834
|
+
}
|
|
835
|
+
var dur=duration || video.duration || 0;
|
|
836
|
+
if(dur && isFinite(dur) && dur>0 && target>=dur){
|
|
837
|
+
target=Math.max(0,dur-0.3);
|
|
838
|
+
}
|
|
839
|
+
hlsScrubResumePlay=!paused;
|
|
840
|
+
clearSeekRetry();
|
|
841
|
+
hlsResumeWarmup=false;
|
|
842
|
+
hlsResumeTarget=-1;
|
|
843
|
+
seekTime=0;
|
|
844
|
+
seekApplyLock=true;
|
|
845
|
+
try{
|
|
846
|
+
video.currentTime=target;
|
|
847
|
+
}catch(event){
|
|
848
|
+
seekApplyLock=false;
|
|
849
|
+
return false;
|
|
850
|
+
}
|
|
851
|
+
// 短暂锁避免 seeking 钩子里抢先 play 打断分片;seeked 后再恢复
|
|
852
|
+
setTimeout(function(){
|
|
853
|
+
seekApplyLock=false;
|
|
854
|
+
},120);
|
|
855
|
+
return true;
|
|
856
|
+
},
|
|
821
857
|
/*
|
|
822
858
|
* destroyStreamPlayers
|
|
823
859
|
* 功能:切换地址前销毁 hls/flv/mpegts 实例
|
|
@@ -830,6 +866,7 @@
|
|
|
830
866
|
hlsResumeWarmup=false;
|
|
831
867
|
hlsLoadAt=-1;
|
|
832
868
|
hlsLoadTs=0;
|
|
869
|
+
hlsScrubResumePlay=false;
|
|
833
870
|
decodeRecoverCount=0;
|
|
834
871
|
if(hls){
|
|
835
872
|
try{
|
|
@@ -995,9 +1032,12 @@
|
|
|
995
1032
|
hls=null;
|
|
996
1033
|
}
|
|
997
1034
|
var hlsConf={
|
|
998
|
-
//
|
|
1035
|
+
// 对齐常见在线 M3U8 播放器:更大前向/后向缓冲,拖动更易命中已缓存区间
|
|
1036
|
+
enableWorker:false,
|
|
999
1037
|
maxBufferLength:30,
|
|
1000
|
-
maxMaxBufferLength:
|
|
1038
|
+
maxMaxBufferLength:600,
|
|
1039
|
+
maxBufferSize:60*1000*1000,
|
|
1040
|
+
backBufferLength:90
|
|
1001
1041
|
};
|
|
1002
1042
|
var resumeAt=seekTime;
|
|
1003
1043
|
if(!resumeAt){
|
|
@@ -2133,7 +2173,10 @@
|
|
|
2133
2173
|
seekRetryTimer=setTimeout(function(){
|
|
2134
2174
|
applyPendingSeek(false);
|
|
2135
2175
|
},200);
|
|
2176
|
+
return;
|
|
2136
2177
|
}
|
|
2178
|
+
// 重试耗尽:落到目标片起点,避免永久转圈
|
|
2179
|
+
finishResumeSeek(hlsFragStartTime(t) || loadAt || t);
|
|
2137
2180
|
return;
|
|
2138
2181
|
}
|
|
2139
2182
|
}
|
|
@@ -2462,6 +2505,17 @@
|
|
|
2462
2505
|
decodeRecoverCount=0;
|
|
2463
2506
|
startPendingAutoplay();
|
|
2464
2507
|
pSliderMouseDown=false;
|
|
2508
|
+
waited=true;
|
|
2509
|
+
if(C['buffer']){
|
|
2510
|
+
C['buffer'].hide();
|
|
2511
|
+
}
|
|
2512
|
+
// 用户拖动后恢复播放(标准 video + hls.js 行为)
|
|
2513
|
+
if(hlsScrubResumePlay){
|
|
2514
|
+
hlsScrubResumePlay=false;
|
|
2515
|
+
try{
|
|
2516
|
+
player.play();
|
|
2517
|
+
}catch(event){}
|
|
2518
|
+
}
|
|
2465
2519
|
eventTarget('seek',{time:this.currentTime,state:'seeked'});
|
|
2466
2520
|
eventTarget('seeked');
|
|
2467
2521
|
},
|
|
@@ -3528,20 +3582,15 @@
|
|
|
3528
3582
|
applyPendingSeek(false);
|
|
3529
3583
|
return player;
|
|
3530
3584
|
}
|
|
3531
|
-
// HLS
|
|
3585
|
+
// HLS:用户拖动/点击进度 → 交互跳转(立即定位,不走续播预热强制暂停)
|
|
3532
3586
|
if(hls){
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
finishResumeSeek(target);
|
|
3537
|
-
return player;
|
|
3538
|
-
}
|
|
3539
|
-
if(target>1){
|
|
3540
|
-
hlsResumeWarmup=true;
|
|
3541
|
-
hlsSeekTo(target, false);
|
|
3542
|
-
applyPendingSeek(false);
|
|
3587
|
+
if(target>0.5 && timeInBuffered(target) && Math.abs((video.currentTime||0)-target)<0.35){
|
|
3588
|
+
seekTime=0;
|
|
3589
|
+
hlsResumeWarmup=false;
|
|
3543
3590
|
return player;
|
|
3544
3591
|
}
|
|
3592
|
+
hlsInteractiveSeek(target);
|
|
3593
|
+
return player;
|
|
3545
3594
|
}
|
|
3546
3595
|
try{
|
|
3547
3596
|
video.currentTime=target;
|
|
@@ -7361,7 +7410,7 @@
|
|
|
7361
7410
|
if(!isRetry && (!vars || vars['cdnFallback']!==false)){
|
|
7362
7411
|
var cdn=(typeof window!=='undefined' && window.ckplayerPlusCdn) ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
7363
7412
|
var m=String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
|
|
7364
|
-
if(cdn && cdn.indexOf('1.1.
|
|
7413
|
+
if(cdn && cdn.indexOf('1.1.6')===-1 && m){
|
|
7365
7414
|
if(cdn.slice(-1)!=='/'){
|
|
7366
7415
|
cdn+='/';
|
|
7367
7416
|
}
|