ckplayer-plus 1.0.3 → 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 +6 -10
- 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/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
|
|
|
@@ -95,14 +95,16 @@ React:
|
|
|
95
95
|
### 插件加载优先级
|
|
96
96
|
|
|
97
97
|
1. `preferBuiltinPlug: false` 且页面已有全局 `Hls` / `flvjs` / `mpegts` → 直接复用
|
|
98
|
-
2. 否则加载本包脚本:`pluginPath`
|
|
98
|
+
2. 否则加载本包脚本:`pluginPath` 或可信的 `window.ckplayerBasePath`(仅 dist / npm 包路径会自动设置;Vite/Webpack chunk 目录会忽略)
|
|
99
99
|
3. 传统 `<script src=".../ckplayer.min.js">` 同级目录推导
|
|
100
|
-
4. `cdnFallback !== false` 时回退:`https://cdn.jsdelivr.net/npm/ckplayer-plus@x.y.z/dist
|
|
100
|
+
4. `cdnFallback !== false` 时回退:`https://cdn.jsdelivr.net/npm/ckplayer-plus@x.y.z/dist/`;若本地路径 404 会再自动重试一次 CDN
|
|
101
101
|
|
|
102
102
|
> 内网离线:把 `node_modules/ckplayer-plus/dist/` 里的 `hls.js/` 等目录放到可访问静态路径,并设置 `pluginPath` 或 `window.ckplayerBasePath`,建议同时 `cdnFallback: false`。
|
|
103
103
|
> 样式请使用 `import 'ckplayer-plus/style.css'`,保证 `./images/` 图标能被打包工具解析。
|
|
104
104
|
|
|
105
|
-
## Vue 2 / Vue 3
|
|
105
|
+
## Vue 2.7 / Vue 3
|
|
106
|
+
|
|
107
|
+
支持 **Vue 2.7+** 与 **Vue 3**(需从 `vue` 解析 `h`,与 peerDependencies 一致)。
|
|
106
108
|
|
|
107
109
|
```vue
|
|
108
110
|
<template>
|
|
@@ -170,9 +172,3 @@ npm publish --access public
|
|
|
170
172
|
## License
|
|
171
173
|
|
|
172
174
|
MIT。内置的 hls.js / flv.js / mpegts.js 遵循各自许可证(多为 Apache-2.0)。
|
|
173
|
-
|
|
174
|
-
## 相关链接
|
|
175
|
-
|
|
176
|
-
- 官网:https://www.ckplayer.com
|
|
177
|
-
- 手册:https://www.ckplayer.com/manual/
|
|
178
|
-
- 官方 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 : '';
|