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/ckplayer.js +72 -16
- package/dist/ckplayer.min.js +2 -2
- package/dist/index.cjs +60 -15
- package/dist/index.js +60 -15
- package/dist/react.cjs +63 -15
- package/dist/react.js +63 -15
- package/dist/vue.cjs +70 -15
- package/dist/vue.js +70 -15
- package/package.json +1 -1
- package/types/vue.d.ts +2 -0
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.0.
|
|
144
|
+
var ckplayerPlusDefaultCdn='https://cdn.jsdelivr.net/npm/ckplayer-plus@1.0.8/dist/';
|
|
145
145
|
function ckplayerEmbed(videoObj){
|
|
146
146
|
/*
|
|
147
147
|
* rightMenu
|
|
@@ -176,6 +176,9 @@
|
|
|
176
176
|
var seekApplyLock=false;//防止并发多次 currentTime 赋值
|
|
177
177
|
var decodeRecoverCount=0;//MEDIA_ERR_DECODE 恢复次数
|
|
178
178
|
var hlsStartPositionUsed=false;//是否已用 hls.js startPosition 处理续播
|
|
179
|
+
var hlsResumeTarget=-1;//HLS 续播目标秒数(避免重复 startLoad 取消分片请求)
|
|
180
|
+
var hlsLoadAt=-1;//最近一次 hls.startLoad 目标
|
|
181
|
+
var hlsLoadTs=0;//最近一次 hls.startLoad 时间戳
|
|
179
182
|
var oldTime=0,playTime=0,firstSeekTime=-1,maxSeeTime=0;//oldTime=记录上次播放时间,playTime=当前播放时间,firstSeekTime=记录第一次拖动的时间,maxSeeTime=看过的最大时间
|
|
180
183
|
var isChangeDef=true;//是否需要重置清晰度
|
|
181
184
|
var playType='';//播放类别,默认='',是通过api接口播放,='button'则判定是通过点击按钮播放
|
|
@@ -414,7 +417,7 @@
|
|
|
414
417
|
}
|
|
415
418
|
var allowCdn=!vars || vars['cdnFallback']!==false;
|
|
416
419
|
var cdn=(typeof window!=='undefined' && window.ckplayerPlusCdn) ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
417
|
-
if(!allowCdn || !cdn || cdn.indexOf('1.0.
|
|
420
|
+
if(!allowCdn || !cdn || cdn.indexOf('1.0.8')>-1){
|
|
418
421
|
// 避免占位版本或显式关闭 CDN 时请求坏地址;交给相对路径或业务 pluginPath
|
|
419
422
|
return folder+'/'+file;
|
|
420
423
|
}
|
|
@@ -730,6 +733,47 @@
|
|
|
730
733
|
applyResumeSeekState(parseResumeSeekFromVars());
|
|
731
734
|
}
|
|
732
735
|
},
|
|
736
|
+
/*
|
|
737
|
+
* hlsSeekTo
|
|
738
|
+
* 功能:HLS 跳转(去重,避免重复 startLoad 取消进行中的 .ts 请求)
|
|
739
|
+
* @force 强制重新加载
|
|
740
|
+
* @returns true=已由 HLS 处理(含 no-op),false=非 HLS 或未处理
|
|
741
|
+
*/
|
|
742
|
+
hlsSeekTo=function(target,force){
|
|
743
|
+
if(!hls || typeof hls.startLoad!=='function' || !video){
|
|
744
|
+
return false;
|
|
745
|
+
}
|
|
746
|
+
if(isNaN(target) || target<0){
|
|
747
|
+
target=0;
|
|
748
|
+
}
|
|
749
|
+
var curTime=video.currentTime || 0;
|
|
750
|
+
if(!force){
|
|
751
|
+
// startPosition / 上次 startLoad 已针对同一续播点,且缓冲已覆盖 → 不再重启
|
|
752
|
+
if(hlsResumeTarget>=0 && Math.abs(hlsResumeTarget-target)<1.5){
|
|
753
|
+
if(timeInBuffered(target) && Math.abs(curTime-target)<2.5){
|
|
754
|
+
return true;
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
// 已在目标附近且可播 → 跳过
|
|
758
|
+
if(timeInBuffered(target) && Math.abs(curTime-target)<1.5){
|
|
759
|
+
hlsResumeTarget=target;
|
|
760
|
+
return true;
|
|
761
|
+
}
|
|
762
|
+
// 短时间内重复 seek 同一点 → 跳过(防止 onReady 再 seek 取消分片)
|
|
763
|
+
if(hlsLoadAt>=0 && Math.abs(hlsLoadAt-target)<1.5 && (Date.now()-hlsLoadTs)<4000){
|
|
764
|
+
return true;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
hlsLoadAt=target;
|
|
768
|
+
hlsLoadTs=Date.now();
|
|
769
|
+
hlsResumeTarget=target;
|
|
770
|
+
try{
|
|
771
|
+
hls.startLoad(target);
|
|
772
|
+
}catch(event){
|
|
773
|
+
return false;
|
|
774
|
+
}
|
|
775
|
+
return true;
|
|
776
|
+
},
|
|
733
777
|
/*
|
|
734
778
|
* destroyStreamPlayers
|
|
735
779
|
* 功能:切换地址前销毁 hls/flv/mpegts 实例
|
|
@@ -738,6 +782,9 @@
|
|
|
738
782
|
clearSeekRetry();
|
|
739
783
|
seekApplyLock=false;
|
|
740
784
|
hlsStartPositionUsed=false;
|
|
785
|
+
hlsResumeTarget=-1;
|
|
786
|
+
hlsLoadAt=-1;
|
|
787
|
+
hlsLoadTs=0;
|
|
741
788
|
decodeRecoverCount=0;
|
|
742
789
|
if(hls){
|
|
743
790
|
try{
|
|
@@ -918,6 +965,9 @@
|
|
|
918
965
|
if(firstSeekTime<0){
|
|
919
966
|
firstSeekTime=resumeAt;
|
|
920
967
|
}
|
|
968
|
+
hlsResumeTarget=resumeAt;
|
|
969
|
+
hlsLoadAt=resumeAt;
|
|
970
|
+
hlsLoadTs=Date.now();
|
|
921
971
|
seekTime=0;
|
|
922
972
|
hlsStartPositionUsed=true;
|
|
923
973
|
clearSeekRetry();
|
|
@@ -930,6 +980,22 @@
|
|
|
930
980
|
applyPendingSeek();
|
|
931
981
|
}
|
|
932
982
|
});
|
|
983
|
+
hls.on(Hls.Events.FRAG_BUFFERED, function(event, data){
|
|
984
|
+
if(hlsResumeTarget<=0 || !data || !data.frag){
|
|
985
|
+
return;
|
|
986
|
+
}
|
|
987
|
+
var fragStart=data.frag.start;
|
|
988
|
+
var fragEnd=fragStart+data.frag.duration;
|
|
989
|
+
if(hlsResumeTarget>=fragStart-0.5 && hlsResumeTarget<=fragEnd+0.5){
|
|
990
|
+
// 续播分片已进入缓冲,解除 waiting
|
|
991
|
+
if(!waited){
|
|
992
|
+
waited=true;
|
|
993
|
+
if(C['buffer']){
|
|
994
|
+
C['buffer'].hide();
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
});
|
|
933
999
|
hls.on(Hls.Events.ERROR, function(event, data){
|
|
934
1000
|
var code=9;
|
|
935
1001
|
var message=language['error']['loadingFailed'];
|
|
@@ -1760,15 +1826,10 @@
|
|
|
1760
1826
|
firstSeekTime=t;
|
|
1761
1827
|
}
|
|
1762
1828
|
}
|
|
1763
|
-
// HLS:用 hls.startLoad
|
|
1764
|
-
if(
|
|
1829
|
+
// HLS:用 hls.startLoad 从目标分片加载(去重,避免取消进行中的 .ts)
|
|
1830
|
+
if(hlsSeekTo(t, !!force)){
|
|
1765
1831
|
clearSeekRetry();
|
|
1766
1832
|
seekTime=0;
|
|
1767
|
-
try{
|
|
1768
|
-
hls.startLoad(t);
|
|
1769
|
-
}catch(event){
|
|
1770
|
-
seekTime=t;
|
|
1771
|
-
}
|
|
1772
1833
|
return;
|
|
1773
1834
|
}
|
|
1774
1835
|
var readyEnough=!isUndefined(video.readyState) && video.readyState>=2;
|
|
@@ -3154,13 +3215,8 @@
|
|
|
3154
3215
|
applyPendingSeek(false);
|
|
3155
3216
|
return player;
|
|
3156
3217
|
}
|
|
3157
|
-
if(
|
|
3218
|
+
if(hlsSeekTo(target, false)){
|
|
3158
3219
|
seekTime=0;
|
|
3159
|
-
try{
|
|
3160
|
-
hls.startLoad(target);
|
|
3161
|
-
}catch(event){
|
|
3162
|
-
seekTime=target;
|
|
3163
|
-
}
|
|
3164
3220
|
return player;
|
|
3165
3221
|
}
|
|
3166
3222
|
try{
|
|
@@ -6978,7 +7034,7 @@
|
|
|
6978
7034
|
if(!isRetry && (!vars || vars['cdnFallback']!==false)){
|
|
6979
7035
|
var cdn=(typeof window!=='undefined' && window.ckplayerPlusCdn) ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
6980
7036
|
var m=String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
|
|
6981
|
-
if(cdn && cdn.indexOf('1.0.
|
|
7037
|
+
if(cdn && cdn.indexOf('1.0.8')===-1 && m){
|
|
6982
7038
|
if(cdn.slice(-1)!=='/'){
|
|
6983
7039
|
cdn+='/';
|
|
6984
7040
|
}
|