@sweet-player/core 0.2.0 → 0.2.1

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.
Files changed (2) hide show
  1. package/README.md +112 -0
  2. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,112 @@
1
+ # @sweet-player/core
2
+
3
+ 基于 hls.js 的自定义视频播放器,核心零框架依赖,TypeScript 编写,支持原生 JS / React / Vue。
4
+
5
+ > React 封装见 [@sweet-player/react](https://www.npmjs.com/package/@sweet-player/react),Vue 封装见 [@sweet-player/vue](https://www.npmjs.com/package/@sweet-player/vue)。
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ npm install @sweet-player/core
11
+ ```
12
+
13
+ 或通过 `<script>` 标签引入 IIFE 版:
14
+
15
+ ```html
16
+ <script src="https://unpkg.com/@sweet-player/core/dist/sweet-player.global.js"></script>
17
+ <script>
18
+ const player = new SweetPlayer.SweetPlayer({ container: '#player', src: '...' });
19
+ </script>
20
+ ```
21
+
22
+ ## 使用
23
+
24
+ ```ts
25
+ import { SweetPlayer } from '@sweet-player/core';
26
+
27
+ const player = new SweetPlayer({
28
+ container: '#player', // 元素或选择器
29
+ src: 'https://example.com/video.m3u8',
30
+ title: '影片标题',
31
+ id: 'ep-01', // 传入后自动断点续播
32
+ volume: 80, // 0-100(localStorage 偏好优先)
33
+ seekStep: 10, // 快进快退秒数
34
+ longSeek: { steps: [10, 30, 60], stepUpInterval: 2000 },
35
+ playbackRates: [0.5, 1, 1.5, 2],
36
+ autoQuality: true, // 默认 true:自动读取 hls levels 填充画质菜单(含"自动"档)
37
+ persist: true, // 默认 true:记忆音量/静音/倍速
38
+ autoNext: 5, // 播完 5 秒倒计时自动下一个(需配合 onNext)
39
+ locale: 'zh-CN', // 内置 zh-CN / en,registerLocale 可扩展
40
+ onPrev: () => {},
41
+ onNext: () => {},
42
+ onQualityChange: (q) => {},
43
+ onAudioTrackChange: (t) => {},
44
+ });
45
+
46
+ player.on('timeupdate', ({ currentTime, duration }) => {});
47
+ player.destroy();
48
+ ```
49
+
50
+ ## 功能
51
+
52
+ - **完整 UI 控件**:播放/暂停、快进退、进度条(拖拽+缓冲)、倍速、画质、画面比例、音轨、音量、全屏、画中画
53
+ - **键盘快捷键**:空格播放暂停、方向键 seek(长按阶梯加速 10→30→60 秒/秒)、↑↓ 音量、F 全屏、M 静音
54
+ - **触屏手势**:横滑 seek、右半屏竖滑音量、双击快进退/全屏、单击切换控制栏
55
+ - **画质自动接入**:HLS 多档画质/音轨自动填充菜单,也支持业务自定义列表
56
+ - **偏好持久化**:音量/倍速 localStorage 记忆;传 `id` 后断点续播
57
+ - **状态蒙层**:缓冲转圈、错误重试、结束重播+自动连播倒计时
58
+ - **i18n**:内置 zh-CN/en,支持自定义语言
59
+ - **插件机制**:`plugins` 选项或 `player.use(plugin)` 运行时安装
60
+ - **主题定制**:CSS 变量覆盖,如 `--sp-accent`
61
+ - **统计信息**:标题 10 连击弹出 YouTube 风格统计面板
62
+
63
+ ## 画质 / 音轨
64
+
65
+ - **自动模式(默认)**:HLS 流有多档画质/音轨时自动填充菜单,选择"自动"由 hls.js ABR 决定。
66
+ - **业务模式**:传入 `qualities` / `audioTracks` 列表则以业务为准,切换通过回调通知;运行时可用 `setQualities()` / `setAudioTracks()` 更新。
67
+
68
+ ## 插件
69
+
70
+ ```ts
71
+ import type { SweetPlayerPlugin } from '@sweet-player/core';
72
+
73
+ const myPlugin: SweetPlayerPlugin = {
74
+ name: 'my-plugin',
75
+ apply(player) {
76
+ // player.video / player.container / player.on 可用
77
+ return () => { /* destroy 时清理 */ };
78
+ },
79
+ };
80
+
81
+ new SweetPlayer({ ..., plugins: [myPlugin] });
82
+ // 或运行时:player.use(myPlugin);
83
+ ```
84
+
85
+ ### 接入 sweet-subtitle 字幕
86
+
87
+ ```ts
88
+ import { SweetSubtitle } from 'sweet-subtitle';
89
+ import type { SweetPlayerPlugin } from '@sweet-player/core';
90
+
91
+ function subtitlePlugin(src: string): SweetPlayerPlugin {
92
+ return {
93
+ name: 'sweet-subtitle',
94
+ apply(player) {
95
+ const sub = new SweetSubtitle(player.video, { src });
96
+ return () => sub.destroy?.();
97
+ },
98
+ };
99
+ }
100
+
101
+ new SweetPlayer({ ..., plugins: [subtitlePlugin('/subs/ep-01.ass')] });
102
+ ```
103
+
104
+ ## 实例 API
105
+
106
+ `play()` `pause()` `toggle()` `seek(t)` `seekBy(±s)` `setRate(r)` `setVolume(0-100)` `setMuted(b)` `setAspectRatio(r)` `setQualities(list)` `setAudioTracks(list)` `toggleFullscreen()` `togglePip()` `load(src)` `setTitle(s)` `use(plugin)` `on/off(event, fn)` `destroy()`
107
+
108
+ 事件:`ready` `play` `pause` `ended` `timeupdate` `ratechange` `volumechange` `fullscreenchange` `pipchange` `aspectratiochange` `qualitychange` `audiotrackchange` `error` `destroy`
109
+
110
+ ## License
111
+
112
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sweet-player/core",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Framework-agnostic HLS video player with built-in UI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",