ckplayer-plus 1.0.2 → 1.0.5
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 +14 -13
- package/dist/ckplayer.js +53 -15
- package/dist/ckplayer.min.js +2 -2
- package/dist/index.cjs +59 -24
- package/dist/index.js +59 -24
- package/dist/react.cjs +106 -56
- package/dist/react.js +106 -56
- package/dist/vue.cjs +173 -100
- package/dist/vue.js +173 -100
- package/package.json +1 -1
- package/types/index.d.ts +2 -0
- package/types/vue.d.ts +11 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ckplayer-plus
|
|
2
2
|
|
|
3
|
-
基于 [ckplayer](https://www.ckplayer.com) X3 的工程化封装:支持 **npm / ESM**,并提供 **Vue 2
|
|
3
|
+
基于 [ckplayer](https://www.ckplayer.com) X3 的工程化封装:支持 **npm / ESM**,并提供 **Vue 2.7+/3** 与 **React** 组件。
|
|
4
4
|
|
|
5
5
|
> **免责声明**:本包为社区/工程化封装,**非 ckplayer 官方包**。播放内核来自 ckplayer(MIT)。完整能力与参数请同时参考 [官方手册](https://www.ckplayer.com/manual/)。npm 上的官方包名为 [`ckplayer`](https://www.npmjs.com/package/ckplayer),请勿混淆。
|
|
6
6
|
|
|
@@ -74,30 +74,37 @@ React:
|
|
|
74
74
|
|------|------|------|
|
|
75
75
|
| `autoPlug` | `true` | 按地址自动选插件;通常保持默认即可 |
|
|
76
76
|
| `plug` | 自动 | 仅在要强制指定或 `autoPlug: false` 时填写:`hls.js` / `flv.js` / `mpegts.js` |
|
|
77
|
+
| `preferBuiltinPlug` | `true` | 优先加载本包内置脚本,避免复用页面上其它全局 `Hls` |
|
|
78
|
+
| `cdnFallback` | `true` | `getPath` 失败时回退 jsDelivr;内网无外网请设 `false` 并配 `pluginPath` |
|
|
77
79
|
| `pluginPath` | 自动 | 插件脚本根路径。默认:`window.ckplayerBasePath` → 本包 `dist/` → jsDelivr CDN |
|
|
80
|
+
| `seek` | `0` | 续播秒数(number 或数字字符串);会同步 `maxSeeTime`,兼容 `timeScheduleAdjust: 5` |
|
|
78
81
|
| `loaded` | — | **只支持函数**;字符串形式已禁用(防 XSS) |
|
|
79
82
|
|
|
80
83
|
### 进阶(按需)
|
|
81
84
|
|
|
82
85
|
| 配置 | 说明 |
|
|
83
86
|
|------|------|
|
|
87
|
+
| `timeScheduleAdjust` | `5` 时只能在已看进度内拖动;续播请同时传数字 `seek` |
|
|
84
88
|
| `crossOrigin` | 跨域视频 / 截图等场景 |
|
|
85
89
|
| `cookie` | 进度记忆;组件默认使用实例唯一名,避免多实例冲突 |
|
|
86
90
|
| `language` | 语言包名,如 `en`、`zh.hk`(需能加载到 `language/*.js`) |
|
|
87
|
-
| `
|
|
91
|
+
| `loop` / `controls` 等 | 与官方 ckplayer 一致,见[手册](https://www.ckplayer.com/manual/) |
|
|
88
92
|
| `window.ckplayerBasePath` | 全局指定插件根目录(以 `/` 结尾),优先于 CDN |
|
|
89
93
|
| `window.ckplayerPlusCdn` | 自定义 CDN 根地址(覆盖默认 jsDelivr) |
|
|
90
94
|
|
|
91
95
|
### 插件加载优先级
|
|
92
96
|
|
|
93
|
-
1.
|
|
94
|
-
2.
|
|
97
|
+
1. `preferBuiltinPlug: false` 且页面已有全局 `Hls` / `flvjs` / `mpegts` → 直接复用
|
|
98
|
+
2. 否则加载本包脚本:`pluginPath` 或可信的 `window.ckplayerBasePath`(仅 dist / npm 包路径会自动设置;Vite/Webpack chunk 目录会忽略)
|
|
95
99
|
3. 传统 `<script src=".../ckplayer.min.js">` 同级目录推导
|
|
96
|
-
4.
|
|
100
|
+
4. `cdnFallback !== false` 时回退:`https://cdn.jsdelivr.net/npm/ckplayer-plus@x.y.z/dist/`;若本地路径 404 会再自动重试一次 CDN
|
|
97
101
|
|
|
98
|
-
> 内网离线:把 `node_modules/ckplayer-plus/dist/` 里的 `hls.js/` 等目录放到可访问静态路径,并设置 `pluginPath` 或 `window.ckplayerBasePath`。
|
|
102
|
+
> 内网离线:把 `node_modules/ckplayer-plus/dist/` 里的 `hls.js/` 等目录放到可访问静态路径,并设置 `pluginPath` 或 `window.ckplayerBasePath`,建议同时 `cdnFallback: false`。
|
|
103
|
+
> 样式请使用 `import 'ckplayer-plus/style.css'`,保证 `./images/` 图标能被打包工具解析。
|
|
99
104
|
|
|
100
|
-
## Vue 2 / Vue 3
|
|
105
|
+
## Vue 2.7 / Vue 3
|
|
106
|
+
|
|
107
|
+
支持 **Vue 2.7+** 与 **Vue 3**(需从 `vue` 解析 `h`,与 peerDependencies 一致)。
|
|
101
108
|
|
|
102
109
|
```vue
|
|
103
110
|
<template>
|
|
@@ -165,9 +172,3 @@ npm publish --access public
|
|
|
165
172
|
## License
|
|
166
173
|
|
|
167
174
|
MIT。内置的 hls.js / flv.js / mpegts.js 遵循各自许可证(多为 Apache-2.0)。
|
|
168
|
-
|
|
169
|
-
## 相关链接
|
|
170
|
-
|
|
171
|
-
- 官网:https://www.ckplayer.com
|
|
172
|
-
- 手册:https://www.ckplayer.com/manual/
|
|
173
|
-
- 官方 npm:https://www.npmjs.com/package/ckplayer
|
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.5/dist/';
|
|
145
145
|
function ckplayerEmbed(videoObj){
|
|
146
146
|
/*
|
|
147
147
|
* rightMenu
|
|
@@ -371,6 +371,16 @@
|
|
|
371
371
|
return embed(obj);
|
|
372
372
|
}
|
|
373
373
|
},
|
|
374
|
+
/*
|
|
375
|
+
* isUnreliablePluginBase
|
|
376
|
+
* 功能:识别 bundler chunk 目录(不含 hls.js 等插件),避免短路 CDN 回退
|
|
377
|
+
*/
|
|
378
|
+
isUnreliablePluginBase=function(base){
|
|
379
|
+
if(!base || valType(base)!='string'){
|
|
380
|
+
return true;
|
|
381
|
+
}
|
|
382
|
+
return /\/(?:assets|\.vite\/deps|_next\/static|chunks?)\/?$/i.test(base);
|
|
383
|
+
},
|
|
374
384
|
/*
|
|
375
385
|
* resolveAssetPath
|
|
376
386
|
* 功能:解析插件/语言包路径
|
|
@@ -384,6 +394,9 @@
|
|
|
384
394
|
else if(typeof window!=='undefined' && window.ckplayerBasePath){
|
|
385
395
|
base=window.ckplayerBasePath;
|
|
386
396
|
}
|
|
397
|
+
if(base && isUnreliablePluginBase(base)){
|
|
398
|
+
base='';
|
|
399
|
+
}
|
|
387
400
|
if(base){
|
|
388
401
|
if(base.slice(-1)!=='/'){
|
|
389
402
|
base+='/';
|
|
@@ -391,12 +404,12 @@
|
|
|
391
404
|
return base+folder+'/'+file;
|
|
392
405
|
}
|
|
393
406
|
var fromScript=getPath(folder)+file;
|
|
394
|
-
if(fromScript && fromScript.indexOf(folder+'/')>-1 && fromScript.indexOf('undefined')===-1){
|
|
407
|
+
if(fromScript && fromScript.indexOf(folder+'/')>-1 && fromScript.indexOf('undefined')===-1 && !isUnreliablePluginBase(getPath())){
|
|
395
408
|
return fromScript;
|
|
396
409
|
}
|
|
397
410
|
var allowCdn=!vars || vars['cdnFallback']!==false;
|
|
398
411
|
var cdn=(typeof window!=='undefined' && window.ckplayerPlusCdn) ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
399
|
-
if(!allowCdn || !cdn || cdn.indexOf('1.0.
|
|
412
|
+
if(!allowCdn || !cdn || cdn.indexOf('1.0.5')>-1){
|
|
400
413
|
// 避免占位版本或显式关闭 CDN 时请求坏地址;交给相对路径或业务 pluginPath
|
|
401
414
|
return folder+'/'+file;
|
|
402
415
|
}
|
|
@@ -6693,7 +6706,7 @@
|
|
|
6693
6706
|
* @file:js文件地址
|
|
6694
6707
|
* @callback:加载完成后执行的函数
|
|
6695
6708
|
*/
|
|
6696
|
-
loadJs=function(file, callback) {
|
|
6709
|
+
loadJs=function(file, callback, isRetry) {
|
|
6697
6710
|
var fn =function() {};
|
|
6698
6711
|
if(!isUndefined(callback)){
|
|
6699
6712
|
fn=callback;
|
|
@@ -6725,19 +6738,38 @@
|
|
|
6725
6738
|
} catch(event) {};
|
|
6726
6739
|
}, 10);
|
|
6727
6740
|
};
|
|
6741
|
+
var removeScript = function() {
|
|
6742
|
+
try {
|
|
6743
|
+
if(script.parentNode){
|
|
6744
|
+
script.parentNode.removeChild(script);
|
|
6745
|
+
}
|
|
6746
|
+
} catch(event) {}
|
|
6747
|
+
};
|
|
6728
6748
|
var w3c = function() {
|
|
6729
|
-
if(valType(fn) == 'function') {
|
|
6730
|
-
fn();
|
|
6731
|
-
}
|
|
6732
6749
|
removeListener(script, 'load', w3c);
|
|
6733
6750
|
removeListener(script, 'error', w3cError);
|
|
6751
|
+
doReady();
|
|
6734
6752
|
};
|
|
6735
6753
|
var w3cError = function() {
|
|
6736
|
-
if(valType(fn) == 'function') {
|
|
6737
|
-
fn();
|
|
6738
|
-
}
|
|
6739
6754
|
removeListener(script, 'load', w3c);
|
|
6740
6755
|
removeListener(script, 'error', w3cError);
|
|
6756
|
+
removeScript();
|
|
6757
|
+
// bundler 下错误 base 路径 404 时,回退 jsDelivr 再试一次
|
|
6758
|
+
if(!isRetry && (!vars || vars['cdnFallback']!==false)){
|
|
6759
|
+
var cdn=(typeof window!=='undefined' && window.ckplayerPlusCdn) ? window.ckplayerPlusCdn : ckplayerPlusDefaultCdn;
|
|
6760
|
+
var m=String(file).match(/\/(hls\.js|flv\.js|mpegts\.js|language)\/([^/?#]+)(?:[?#].*)?$/i);
|
|
6761
|
+
if(cdn && cdn.indexOf('1.0.5')===-1 && m){
|
|
6762
|
+
if(cdn.slice(-1)!=='/'){
|
|
6763
|
+
cdn+='/';
|
|
6764
|
+
}
|
|
6765
|
+
var retryUrl=cdn+m[1]+'/'+m[2];
|
|
6766
|
+
if(retryUrl!==file){
|
|
6767
|
+
loadJs(retryUrl, callback, true);
|
|
6768
|
+
return;
|
|
6769
|
+
}
|
|
6770
|
+
}
|
|
6771
|
+
}
|
|
6772
|
+
// 加载失败不再假装成功,避免在 Hls/flvjs 未定义时继续执行
|
|
6741
6773
|
};
|
|
6742
6774
|
try {
|
|
6743
6775
|
addListener(script, 'load', w3c);
|
|
@@ -7021,13 +7053,19 @@
|
|
|
7021
7053
|
function getPath(siz) {
|
|
7022
7054
|
if (typeof window !== 'undefined' && window.ckplayerBasePath) {
|
|
7023
7055
|
var base = window.ckplayerBasePath;
|
|
7024
|
-
|
|
7025
|
-
|
|
7056
|
+
// bundler chunk 目录不含插件文件,忽略并继续 script/CDN 推导
|
|
7057
|
+
if (/\/(?:assets|\.vite\/deps|_next\/static|chunks?)\/?$/i.test(base)) {
|
|
7058
|
+
base = '';
|
|
7026
7059
|
}
|
|
7027
|
-
if (
|
|
7028
|
-
|
|
7060
|
+
if (base) {
|
|
7061
|
+
if (base.slice(-1) !== '/') {
|
|
7062
|
+
base += '/';
|
|
7063
|
+
}
|
|
7064
|
+
if (!isUndefined(siz)) {
|
|
7065
|
+
return base + siz + '/';
|
|
7066
|
+
}
|
|
7067
|
+
return base;
|
|
7029
7068
|
}
|
|
7030
|
-
return base;
|
|
7031
7069
|
}
|
|
7032
7070
|
var scriptList = document.scripts || [],
|
|
7033
7071
|
thisPath = scriptList.length ? scriptList[scriptList.length - 1].src : '';
|