ckplayer-plus 1.1.2 → 1.1.3
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/README.md +3 -3
- package/dist/ckplayer.js +35 -17
- package/dist/ckplayer.min.js +2 -2
- package/dist/index.cjs +29 -16
- package/dist/index.js +29 -16
- package/dist/react.cjs +32 -16
- package/dist/react.js +32 -16
- package/dist/vue.cjs +32 -16
- package/dist/vue.js +32 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ React:
|
|
|
63
63
|
| `container` | 核心 API 必须;组件不用 | — | 播放器挂载节点。Vue/React 组件内部自动创建,**不要传** |
|
|
64
64
|
| `video` | 必须 | — | 视频地址或清晰度数组 |
|
|
65
65
|
| `poster` | 可选 | `''` | 封面图 |
|
|
66
|
-
| `autoplay` | 可选 | `false` |
|
|
66
|
+
| `autoplay` | 可选 | `false` | 自动播放。**课程/断点续播请保持 `false`**:有 `seek` 时组件会强制关闭自动播,只定位进度,需用户点击播放 |
|
|
67
67
|
| `volume` | 可选 | `0.8` | 音量 0–1 |
|
|
68
68
|
| `live` | 可选 | `false` | 直播相关 |
|
|
69
69
|
| `width` / `height` | 组件可选 | `100%` / `400px` | 仅 Vue/React 组件样式 |
|
|
@@ -77,7 +77,7 @@ React:
|
|
|
77
77
|
| `preferBuiltinPlug` | `true` | 优先加载本包内置脚本,避免复用页面上其它全局 `Hls` |
|
|
78
78
|
| `cdnFallback` | `true` | `getPath` 失败时回退 jsDelivr;内网无外网请设 `false` 并配 `pluginPath` |
|
|
79
79
|
| `pluginPath` | 自动 | 插件脚本根路径。默认:`window.ckplayerBasePath` → 本包 `dist/` → jsDelivr CDN |
|
|
80
|
-
| `seek` | `0` |
|
|
80
|
+
| `seek` | `0` | 续播秒数。HLS 对齐分片起点缓冲后再定位;**只 seek 不自动 play**,避免 Network 出现 canceled `.ts` |
|
|
81
81
|
| `loaded` | — | **只支持函数**;字符串形式已禁用(防 XSS) |
|
|
82
82
|
|
|
83
83
|
### 进阶(按需)
|
|
@@ -125,7 +125,7 @@ export default {
|
|
|
125
125
|
</script>
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
断点续播:`seek` 用 `:seek` 或 `options.seek` 在创建时传入;**不要**在 `@ready` 里再 `player.seek(16)`,否则会重复加载 HLS、取消 `.ts`
|
|
128
|
+
断点续播:`seek` 用 `:seek` 或 `options.seek` 在创建时传入;**不要**在 `@ready` 里再 `player.seek(16)`,否则会重复加载 HLS、取消 `.ts` 分片导致卡住。有 `seek` 时不会自动播放,定位完成后点中央播放按钮即可。切集/切换清晰度同样不强制自动播。
|
|
129
129
|
|
|
130
130
|
SSR(Nuxt 等)请用 `<ClientOnly>`,仅在浏览器初始化。
|
|
131
131
|
|
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.3/dist/';
|
|
145
145
|
function ckplayerEmbed(videoObj){
|
|
146
146
|
/*
|
|
147
147
|
* rightMenu
|
|
@@ -446,7 +446,7 @@
|
|
|
446
446
|
}
|
|
447
447
|
var allowCdn=!vars || vars['cdnFallback']!==false;
|
|
448
448
|
var cdn=(typeof window!=='undefined' && window.ckplayerPlusCdn) ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
449
|
-
if(!allowCdn || !cdn || cdn.indexOf('1.1.
|
|
449
|
+
if(!allowCdn || !cdn || cdn.indexOf('1.1.3')>-1){
|
|
450
450
|
// 避免占位版本或显式关闭 CDN 时请求坏地址;交给相对路径或业务 pluginPath
|
|
451
451
|
return folder+'/'+file;
|
|
452
452
|
}
|
|
@@ -594,7 +594,13 @@
|
|
|
594
594
|
// 不使用原生 autoplay 属性:浏览器会在 seek 前开始 play,随后
|
|
595
595
|
// currentTime / pause 等初始化动作会打断其 Promise,导致永久 loading。
|
|
596
596
|
video.attr('preload','auto');
|
|
597
|
-
|
|
597
|
+
// 带断点续播时不自动播:只定位进度,等用户点击(避免 .ts canceled)
|
|
598
|
+
if(parseResumeSeekFromVars()>0){
|
|
599
|
+
autoplayPending=false;
|
|
600
|
+
}
|
|
601
|
+
else{
|
|
602
|
+
autoplayPending=true;
|
|
603
|
+
}
|
|
598
604
|
}
|
|
599
605
|
else{
|
|
600
606
|
video.attr('preload','metadata');
|
|
@@ -763,6 +769,10 @@
|
|
|
763
769
|
if(!seekTime){
|
|
764
770
|
applyResumeSeekState(parseResumeSeekFromVars());
|
|
765
771
|
}
|
|
772
|
+
// 有续播目标:取消自动播放,定位后展示中央播放按钮
|
|
773
|
+
if(seekTime>0){
|
|
774
|
+
autoplayPending=false;
|
|
775
|
+
}
|
|
766
776
|
},
|
|
767
777
|
/*
|
|
768
778
|
* hlsSeekTo
|
|
@@ -1920,26 +1930,31 @@
|
|
|
1920
1930
|
},
|
|
1921
1931
|
/*
|
|
1922
1932
|
* finishResumeSeek
|
|
1923
|
-
*
|
|
1933
|
+
* 功能:完成续播定位。只 seek、不自动 play(由用户点击中央按钮/播放键)
|
|
1934
|
+
* 避免 seek 后立刻 play 打断 HLS 分片请求(Network 出现 canceled .ts)并导致永久转圈
|
|
1924
1935
|
*/
|
|
1925
1936
|
finishResumeSeek=function(t){
|
|
1926
1937
|
hlsResumeWarmup=false;
|
|
1938
|
+
// 续播场景取消挂起的自动播放,统一改为点击播放
|
|
1939
|
+
autoplayPending=false;
|
|
1927
1940
|
applySeekToMedia(t);
|
|
1928
|
-
// seeked 可能因解码抖动延迟;主动再拉一次播放,避免永久转圈
|
|
1929
1941
|
setTimeout(function(){
|
|
1930
1942
|
if(!video){return;}
|
|
1943
|
+
try{
|
|
1944
|
+
video.pause();
|
|
1945
|
+
}catch(event){}
|
|
1946
|
+
paused=true;
|
|
1931
1947
|
if(C['buffer']){
|
|
1932
1948
|
C['buffer'].hide();
|
|
1933
1949
|
}
|
|
1934
1950
|
waited=true;
|
|
1935
|
-
if(vars['
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
autoplayPending=false;
|
|
1951
|
+
if(!vars['controls'] && C['centerPlay']){
|
|
1952
|
+
C['centerPlay'].show();
|
|
1953
|
+
}
|
|
1954
|
+
if(C['bar'] && C['bar']['playAndPause']){
|
|
1955
|
+
C['bar']['playAndPause']['pause'].hide();
|
|
1956
|
+
C['bar']['playAndPause']['play'].show();
|
|
1957
|
+
C['bar']['playAndPause']['refresh'].hide();
|
|
1943
1958
|
}
|
|
1944
1959
|
},120);
|
|
1945
1960
|
},
|
|
@@ -2372,8 +2387,8 @@
|
|
|
2372
2387
|
eventTarget('seeked');
|
|
2373
2388
|
},
|
|
2374
2389
|
seeking:function(){
|
|
2375
|
-
//
|
|
2376
|
-
if(paused && !seekApplyLock && !hlsResumeWarmup && !seekTime){
|
|
2390
|
+
// 续播/初始化定位中禁止抢先 play:会取消进行中的 .ts 并导致永久 loading
|
|
2391
|
+
if(paused && !seekApplyLock && !hlsResumeWarmup && !seekTime && !autoplayPending){
|
|
2377
2392
|
player.play();
|
|
2378
2393
|
}
|
|
2379
2394
|
var seekingTime=this.currentTime;
|
|
@@ -4833,7 +4848,10 @@
|
|
|
4833
4848
|
}
|
|
4834
4849
|
}
|
|
4835
4850
|
seekTime=player.time();
|
|
4836
|
-
|
|
4851
|
+
// 切换清晰度只保留进度,不强制 autoplay(避免分片 canceled + 未经点击就播放)
|
|
4852
|
+
try{
|
|
4853
|
+
video.removeAttr('autoplay');
|
|
4854
|
+
}catch(event){}
|
|
4837
4855
|
changeVideo(ele.attr('data-video'));
|
|
4838
4856
|
message(language['switchTo']+ele.htm());
|
|
4839
4857
|
C['bar']['definition']['button'].htm(ele.htm());
|
|
@@ -7264,7 +7282,7 @@
|
|
|
7264
7282
|
if(!isRetry && (!vars || vars['cdnFallback']!==false)){
|
|
7265
7283
|
var cdn=(typeof window!=='undefined' && window.ckplayerPlusCdn) ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
7266
7284
|
var m=String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
|
|
7267
|
-
if(cdn && cdn.indexOf('1.1.
|
|
7285
|
+
if(cdn && cdn.indexOf('1.1.3')===-1 && m){
|
|
7268
7286
|
if(cdn.slice(-1)!=='/'){
|
|
7269
7287
|
cdn+='/';
|
|
7270
7288
|
}
|