@video-supply/dahua-player 0.1.0 → 0.1.2

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 CHANGED
@@ -1,18 +1,25 @@
1
1
  # @video-supply/dahua-player
2
2
 
3
+ - [English](#english)
4
+ - [中文](#zh)
5
+
6
+ <a id="english"></a>
7
+
8
+ ## English
9
+
3
10
  Dahua (WSPlayer) browser player wrapper. It provides a single entry API:
4
11
 
5
12
  - `DahuaPlayer.init(options)`
6
13
 
7
14
  This package includes Dahua static assets (`wsplayer-gov/`) and copies them into your app's static directory on install.
8
15
 
9
- ## Install
16
+ ### Install
10
17
 
11
18
  ```bash
12
19
  npm i @video-supply/dahua-player
13
20
  ```
14
21
 
15
- ## Quick Start
22
+ ### Quick Start
16
23
 
17
24
  ```ts
18
25
  import { DahuaPlayer } from '@video-supply/dahua-player';
@@ -30,7 +37,7 @@ const player = DahuaPlayer.init({
30
37
  await player.ready;
31
38
  ```
32
39
 
33
- ### Multi-window / Record helpers
40
+ #### Multi-window / Record helpers
34
41
 
35
42
  ```ts
36
43
  const player = DahuaPlayer.init({
@@ -55,9 +62,9 @@ player.sdk.jumpPlayByDateTime('2026-03-01 12:00:00', 0);
55
62
  player.sdk.setFullScreen();
56
63
  ```
57
64
 
58
- ## API
65
+ ### API
59
66
 
60
- ### DahuaPlayer.init(options)
67
+ #### DahuaPlayer.init(options)
61
68
 
62
69
  Required:
63
70
 
@@ -88,7 +95,7 @@ Optional:
88
95
 
89
96
  Returns: `DahuaPlayerInstance`
90
97
 
91
- ### Instance methods
98
+ #### Instance methods
92
99
 
93
100
  - `ready: Promise<void>`
94
101
  - Resolves when WSPlayer initialization is completed (initializationCompleted).
@@ -103,7 +110,7 @@ Returns: `DahuaPlayerInstance`
103
110
  - Subscribe/unsubscribe events: `ready` / `play` / `pause` / `error` / `destroy`.
104
111
  - `play` payload: `{ mode?: 'real' | 'record' }`.
105
112
 
106
- ### SDK methods (`instance.sdk`)
113
+ #### SDK methods (`instance.sdk`)
107
114
 
108
115
  - `getRaw(): any`
109
116
  - Returns the underlying WSPlayer/PlayerManager instance (debugging or unwrapped methods).
@@ -144,7 +151,7 @@ Returns: `DahuaPlayerInstance`
144
151
  - Fallback to call an underlying WSPlayer method by name.
145
152
  - Throws if method is missing.
146
153
 
147
- ### Events
154
+ #### Events
148
155
 
149
156
  - `ready`
150
157
  - `play` (payload: `{ mode?: 'real' | 'record' }`)
@@ -152,11 +159,11 @@ Returns: `DahuaPlayerInstance`
152
159
  - `error` (payload: `unknown`)
153
160
  - `destroy`
154
161
 
155
- ## Static assets
162
+ ### Static assets
156
163
 
157
164
  By default, on installation this package copies:
158
165
 
159
- - `node_modules/@company/dahua-player/wsplayer-gov`
166
+ - `node_modules/@video-supply/dahua-player/wsplayer-gov`
160
167
 
161
168
  to your project:
162
169
 
@@ -166,27 +173,231 @@ Then the SDK is loaded from:
166
173
 
167
174
  - `/wsplayer-gov/wsplayer.min.js`
168
175
 
169
- ### Disable postinstall copy
176
+ #### Disable postinstall copy
170
177
 
171
178
  ```bash
172
179
  set DAHUA_PLAYER_SKIP_POSTINSTALL=1
173
- npm i @company/dahua-player --registry <PRIVATE_REGISTRY>
180
+ npm i @video-supply/dahua-player
174
181
  ```
175
182
 
176
183
  Then manually copy:
177
184
 
178
- - `node_modules/@company/dahua-player/wsplayer-gov` → `public/wsplayer-gov`
185
+ - `node_modules/@video-supply/dahua-player/wsplayer-gov` → `public/wsplayer-gov`
179
186
 
180
- ### Change public dir
187
+ #### Change public dir
181
188
 
182
189
  ```bash
183
190
  set DAHUA_PLAYER_PUBLIC_DIR=static
184
- npm i @company/dahua-player --registry <PRIVATE_REGISTRY>
191
+ npm i @video-supply/dahua-player
185
192
  ```
186
193
 
187
- ## Release (private registry)
194
+ <a id="zh"></a>
195
+
196
+ ## 中文
197
+
198
+ 这是对大华 WSPlayer 的轻量封装,提供单入口初始化:
199
+
200
+ - `DahuaPlayer.init(options)`
201
+
202
+ 并对外暴露常用的播放/回放/倍速/跳转/全屏/布局切换等能力。
203
+
204
+ ### 安装
188
205
 
189
206
  ```bash
190
- set NPM_REGISTRY=<PRIVATE_REGISTRY>
191
- npm run release:private
207
+ npm i @video-supply/dahua-player
208
+ ```
209
+
210
+ ### 快速开始
211
+
212
+ ```ts
213
+ import { DahuaPlayer } from '@video-supply/dahua-player';
214
+
215
+ const player = DahuaPlayer.init({
216
+ container: 'player',
217
+ auth: {
218
+ token: 'YOUR_DAHUA_TOKEN',
219
+ ip: '10.3.156.238',
220
+ port: 8320,
221
+ },
222
+ cameraId: 'YOUR_CAMERA_ID',
223
+ autoPlay: true,
224
+ width: 'auto',
225
+ height: 'auto',
226
+ });
227
+
228
+ await player.ready;
229
+ ```
230
+
231
+ ### 初始化参数(DahuaPlayer.init)
232
+
233
+ 必填:
234
+
235
+ - `container: HTMLElement | string`
236
+ - `auth: { token: string; ip?: string; port?: number; protocol?: 'http' | 'https' }`
237
+
238
+ 字段解释:
239
+
240
+ - `container`
241
+ - 播放器挂载容器
242
+ - `string`:按 DOM id 查找
243
+ - `HTMLElement`:直接使用该元素
244
+ - `auth.token`
245
+ - 鉴权 token(必填)
246
+ - 仅做非空校验;内部通过 sessionStorage shim 注入给 WSPlayer 使用,避免 token 落盘
247
+ - `auth.ip`
248
+ - 现场部署的大华平台 IP(可选)
249
+ - 用于内部拼装 `targetOrigin`,写入 `sessionStorage.wsplayer_origin`,可在网关/nginx 侧用于代理转发
250
+ - `auth.port`
251
+ - 现场部署的大华平台端口(可选)
252
+ - 同上,用于拼装 `targetOrigin`
253
+ - `auth.protocol`
254
+ - 协议(可选):`http` 或 `https`(默认 `https`)
255
+
256
+ 播放相关:
257
+
258
+ - `mode?: 'real' | 'record'`
259
+ - 播放模式:实时预览 / 录像回放(默认 `real`)
260
+ - `cameraId?: string`
261
+ - 单通道编码(可选)
262
+ - `cameraIds?: string[]`
263
+ - 多通道编码(可选)
264
+ - 最终实际播放数量会按“当前路数 num”裁剪
265
+ - `autoPlay?: boolean`
266
+ - `true` 时在 `ready` 后自动触发一次播放(默认 `false`)
267
+ - `mode=real` 需要 `cameraId/cameraIds` 至少一个存在
268
+ - `mode=record` 需要 `recordStartTime/recordEndTime` 且 `cameraId/cameraIds` 至少一个存在
269
+ - `recordStartTime?: number`
270
+ - 录像回放开始时间(Unix 秒)
271
+ - 仅 `mode=record + autoPlay=true` 使用
272
+ - `recordEndTime?: number`
273
+ - 录像回放结束时间(Unix 秒)
274
+ - 仅 `mode=record + autoPlay=true` 使用
275
+ - `recordSource?: number`
276
+ - 录像来源(透传给 WSPlayer)
277
+ - 仅 `mode=record + autoPlay=true` 使用
278
+ - `streamType?: 1 | 2 | 3`
279
+ - 码流类型:1 主码流 / 2 辅码流1 / 3 辅码流2(默认 `2`)
280
+ - `searchOnline?: boolean`
281
+ - 是否由组件内部查询在线状态(默认 `false`)
282
+
283
+ 布局/显示:
284
+
285
+ - `num?: number`
286
+ - 初始显示路数(默认 `1`)
287
+ - 常用值:`1/4/9/16/25`
288
+ - `maxNum?: number`
289
+ - 最大支持路数(默认 `1`)
290
+ - 上限仍受 WSPlayer 内核与浏览器性能影响
291
+ - `showRecordProgressBar?: boolean`
292
+ - 是否展示录像回放时间轴
293
+ - 未传时:`record` 默认 `true`,`real` 默认 `false`
294
+ - `dblClickFullscreen?: boolean`
295
+ - 是否启用双击切换全屏/退出全屏(默认 `true`)
296
+
297
+ 高级:
298
+
299
+ - `staticPath?: string`
300
+ - 静态资源根路径(默认 `/wsplayer-gov`)
301
+ - `sdkUrl?: string`
302
+ - WSPlayer 脚本地址(默认 `/wsplayer-gov/wsplayer.min.js`)
303
+ - `playerOptions?: Record<string, unknown>`
304
+ - 透传给底层 `PlayerManager` 的原始配置(与内部默认配置合并)
305
+ - `debug?: boolean`
306
+ - 是否打印库内部调试日志
307
+ - 回调
308
+ - `onReady`:内核初始化完成(不等同于播放成功)
309
+ - `onPlay`:播放成功(包含 real/record)
310
+ - `onPause`:暂停
311
+ - `onError`:初始化/播放等错误
312
+ - `onDestroy`:销毁
313
+ - `onSdkMessage`:透出 WSPlayer 原始消息(排障用)
314
+
315
+ ### 实例与 SDK 方法
316
+
317
+ ```ts
318
+ const instance = DahuaPlayer.init(...);
319
+ await instance.ready;
320
+ ```
321
+
322
+ - `instance.ready: Promise<void>`
323
+ - 初始化完成后 resolve(对应 WSPlayer 的 initializationCompleted)
324
+ - 只代表内核初始化完成,不代表已经播放成功
325
+ - `instance.pause(): void`
326
+ - 暂停当前播放窗口(默认窗口 0)
327
+ - 语义等价于调用 `instance.sdk.pause()`(库内部做了兼容处理)
328
+ - `instance.destroy(): void`
329
+ - 销毁播放器实例并释放资源
330
+ - 会移除 DOM、清理定时器、释放 sessionStorage shim
331
+ - `instance.on(event, handler) / instance.off(event, handler)`
332
+ - 订阅/取消订阅事件:`ready` / `play` / `pause` / `error` / `destroy`
333
+ - `play` 事件 payload:`{ mode?: 'real' | 'record' }`
334
+
335
+ `instance.sdk`:
336
+
337
+ - `getRaw(): any`
338
+ - 获取底层 WSPlayer/PlayerManager 实例(用于排障或调用未封装能力)
339
+ - `playRealVideo(opt: any): void`
340
+ - 实时预览播放
341
+ - `opt` 透传给底层,同时支持以下通道入参(优先级从高到低):
342
+ - `opt.channelList`(数组:`[{ channelCode: string }, ...]`)
343
+ - `opt.cameraIds` / `opt.cameraId`(内部会转为 channelList)
344
+ - 初始化时的 `cameraIds/cameraId`
345
+ - 多通道时会按当前路数 `num` 自动裁剪(最多播放 `num` 路)
346
+ - `playRecordVideo(opt: any): void`
347
+ - 录像回放播放
348
+ - 通道入参与裁剪规则同 `playRealVideo`
349
+ - 常用字段(透传底层):`startTime/endTime/recordSource`
350
+ - `pause(windowIndex?): void`
351
+ - 暂停指定窗口
352
+ - `windowIndex` 不传时默认暂停当前窗口(底层实现可能按 0 处理)
353
+ - `play(windowIndex?): void`
354
+ - 继续播放指定窗口
355
+ - `close(windowIndex?): void`
356
+ - 关闭指定窗口播放
357
+ - `setPlayerNum(num: number): void`
358
+ - 切换布局路数(例如 1/4/9/16)
359
+ - 变更后多通道播放的最大数量会随之变化(按新路数裁剪)
360
+ - `jumpPlayByDateTime(datetime: string | Date | number, index?: number): void`
361
+ - 录像跳转播放(仅 `mode=record` 可用)
362
+ - `datetime` 支持:
363
+ - `string`:推荐 `YYYY-MM-DD HH:mm:ss`
364
+ - `Date`
365
+ - `number`:时间戳(秒或毫秒,内部会自动兼容)
366
+ - `index`:窗口索引(默认窗口 0)
367
+ - `playSpeed(speed: number, index: number): void`
368
+ - 设置录像回放倍速(仅 `mode=record` 可用)
369
+ - `speed` 支持:`0.125/0.25/0.5/1/1.25/1.5/2/4/8`
370
+ - `index`:窗口索引(通常传 0)
371
+ - `setFullScreen(): void`
372
+ - 设置播放器全屏
373
+ - 优先调用 WSPlayer 内核全屏;如内核不支持,则回退浏览器 Fullscreen API
374
+ - `setExitFullScreen(): void`
375
+ - 退出全屏
376
+ - 优先调用 WSPlayer 内核;如内核不支持,则回退浏览器 Fullscreen API
377
+ - `callRaw(method: string, ...args: any[]): any`
378
+ - 兜底调用底层实例的方法
379
+ - `method` 为底层方法名字符串(不存在会抛出错误)
380
+
381
+ ### 录像回放示例(多路 + 跳转 + 倍速)
382
+
383
+ ```ts
384
+ const player = DahuaPlayer.init({
385
+ container: 'player',
386
+ auth: { token: 'YOUR_DAHUA_TOKEN' },
387
+ mode: 'record',
388
+ cameraIds: ['ID_1', 'ID_2', 'ID_3', 'ID_4'],
389
+ num: 4,
390
+ maxNum: 16,
391
+ });
392
+
393
+ await player.ready;
394
+
395
+ player.sdk.playRecordVideo({
396
+ startTime: Math.floor(Date.now() / 1000) - 60,
397
+ endTime: Math.floor(Date.now() / 1000),
398
+ recordSource: 2,
399
+ });
400
+
401
+ player.sdk.playSpeed(2, 0);
402
+ player.sdk.jumpPlayByDateTime('2026-03-01 12:00:00', 0);
192
403
  ```
package/README.zh-CN.md CHANGED
@@ -1,4 +1,4 @@
1
- # @company/dahua-player(base-player)中文接入文档
1
+ # @video-supply/dahua-player 中文文档
2
2
 
3
3
  这是对大华 WSPlayer 的轻量封装,提供单入口初始化:
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@video-supply/dahua-player",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Dahua WSPlayer wrapper for browser apps",
5
5
  "type": "module",
6
6
  "sideEffects": false,