@polyv/wx-live-player-core 3.0.0-dev.12

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.
@@ -0,0 +1,656 @@
1
+ // Generated by dts-bundle v0.7.3
2
+
3
+ /** @file 入口文件 */
4
+ export default PolyvLive;
5
+
6
+ export class PolyvLive {
7
+ constructor(config: PlayerConfig);
8
+ /**
9
+ * 播放器初始化
10
+ * @description 初始化播放器, 包括鉴权, 解析当前状态等操作
11
+ */
12
+ setUp(): Promise<void>;
13
+ /**
14
+ * 获取播放类型
15
+ * @returns 播放类型
16
+ * @description 可以通过 `getPlayType` 主动获取当前的播放类型
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const playType = player.getPlayType();
21
+ *
22
+ * if (playType === PlayType.WAIT_START) {
23
+ * console.log('当前暂无直播, 显示暂未直播盖图');
24
+ * }}
25
+ * ```
26
+ */
27
+ getPlayType(): PlayType;
28
+ /**
29
+ * 刷新当前播放流
30
+ * @description 一般用于直播过程中, 出现卡顿等情况, 主动刷新当前播放流
31
+ * @example
32
+ * ```ts
33
+ * <button bind:tap="refresh"></button>
34
+ *
35
+ * player.on(PlayerEventsType.UPDATE_MEDIA_INFO, (mediaInfo: MediaInfo) => {
36
+ * const { playType, src } = mediaInfo;
37
+ * this.setData({ src });
38
+ * });
39
+ *
40
+ * // 调用刷新流接口,触发`UPDATE_MEDIA_INFO`事件更新视频播放地址
41
+ * function refresh() {
42
+ * player.refresh();
43
+ * }
44
+ * ```
45
+ */
46
+ refresh(): void;
47
+ /**
48
+ * 设置统计参数
49
+ * @description 播放中途如设置昵称, 可以通过`setStatics`更新统计参数。一般param1用于设置用户唯一Id,param2用于设置用户昵称等信息
50
+ * @param statics 统计参数
51
+ * @example
52
+ * ```ts
53
+ * player.setStatics({
54
+ * param2: '昵称',
55
+ * });
56
+ * ```
57
+ */
58
+ setStatics(statics: PlayerStatisticsSetting): void;
59
+ /**
60
+ * 开始统计播放时长
61
+ * @description 连麦结束,需要调用`startCountPd`开始统计播放时长
62
+ * @ignore
63
+ */
64
+ startCountPd(): void;
65
+ /**
66
+ * 暂停统计播放时长
67
+ * @description 连麦中途,CDN播放器会暂停统计播放时长,需要调用`stopCountPd`暂停统计播放时长
68
+ * @ignore
69
+ */
70
+ stopCountPd(): void;
71
+ /**
72
+ * 切换线路
73
+ * @description 切换线路, 切换线路后, 会触发`UPDATE_MEDIA_INFO`事件
74
+ * @param line 线路索引 0 代表线路1
75
+ * @example
76
+ * ```ts
77
+ * <button bind:tap="changeLine"></button>
78
+ *
79
+ * player.on(PlayerEventsType.UPDATE_MEDIA_INFO, (mediaInfo: MediaInfo) => {
80
+ * const { playType, src } = mediaInfo;
81
+ * this.setData({ src });
82
+ * });
83
+ *
84
+ * // 调用切换线路接口,触发`UPDATE_MEDIA_INFO`事件更新视频播放地址
85
+ * function changeLine() {
86
+ * player.changeLine(0);
87
+ * }
88
+ * ```
89
+ */
90
+ changeLine(line: number): void;
91
+ /**
92
+ * 切换清晰度
93
+ * @description 切换清晰度, 切换清晰度后, 会触发`UPDATE_MEDIA_INFO`事件
94
+ * @param level 清晰度索引 0 代表流畅
95
+ * @example
96
+ * ```ts
97
+ * <button bind:tap="changeLevel"></button>
98
+ *
99
+ * player.on(PlayerEventsType.UPDATE_MEDIA_INFO, (mediaInfo: MediaInfo) => {
100
+ * const { playType, src } = mediaInfo;
101
+ * this.setData({ src });
102
+ * });
103
+ *
104
+ * // 调用切换清晰度接口,触发`UPDATE_MEDIA_INFO`事件更新视频播放地址
105
+ * function changeLevel() {
106
+ * player.changeLevel();
107
+ * }
108
+ * ```
109
+ */
110
+ changeLevel(level: number): void;
111
+ /**
112
+ * 切换延迟内核
113
+ * @description 切换延迟内核, 切换延迟内核后, 会触发`UPDATE_MEDIA_INFO`事件
114
+ * @param playCore 延迟内核索引 0 代表普通延迟 1 代表无延迟
115
+ */
116
+ changePlayCore(playCore: number): void;
117
+ /**
118
+ * 监测播放组件状态回调
119
+ */
120
+ setLivePlayerStateChange(e: WechatMiniprogram.LivePlayerStateChange): void;
121
+ /**
122
+ * 事件监听
123
+ */
124
+ on<K extends keyof PlayerEventMap>(event: K, listener: PlayerEventMap[K]): void;
125
+ /**
126
+ * 取消事件监听
127
+ */
128
+ off<K extends keyof PlayerEventMap>(event: K, listener: PlayerEventMap[K]): void;
129
+ /**
130
+ * 销毁播放实例
131
+ */
132
+ destroy(): void;
133
+ }
134
+
135
+ /**
136
+ * 是/否
137
+ */
138
+ export type YN = 'Y' | 'N';
139
+ /** 鉴权配置 */
140
+ export interface AuthSetting {
141
+ /** 应用ID */
142
+ appId: string;
143
+ /**
144
+ * 校验签名
145
+ * @example
146
+ * 签名计算示例,注意:请勿在前端代码出现明文appSecret,建议通过后端接口获取appSecret
147
+ * ```ts
148
+ * const params = {
149
+ * appId: appId,
150
+ * channelId: channelId,
151
+ * timestamp: new Date().getTime(),
152
+ * }
153
+ * const appSecret = '123456';
154
+ * const sign = md5(`${appId}${timestamp}${appSecret}`).toUpperCase();
155
+ * ```
156
+ */
157
+ sign: string;
158
+ /** 校验时间戳 */
159
+ timestamp: number;
160
+ }
161
+ /**
162
+ * 播放器初始化配置项
163
+ */
164
+ export interface PlayerConfig {
165
+ /**
166
+ * 鉴权参数
167
+ */
168
+ auth: AuthSetting;
169
+ /**
170
+ * 用户id
171
+ */
172
+ uid: string;
173
+ /**
174
+ * 频道id
175
+ */
176
+ cid: string;
177
+ /**
178
+ * 统计数据
179
+ */
180
+ statistics?: StatisticsSetting;
181
+ /**
182
+ * 回放地址
183
+ */
184
+ vodSrc?: string;
185
+ /**
186
+ * 回放时长
187
+ */
188
+ vodDuration?: number;
189
+ /**
190
+ * 自动切换直播和回放视频,默认false
191
+ */
192
+ isAutoChange?: boolean;
193
+ /**
194
+ * 是否强制使用video组件播放直播, 默认false
195
+ */
196
+ forceVideo?: boolean;
197
+ /**
198
+ * 默认使用线路
199
+ */
200
+ line?: number;
201
+ /**
202
+ * 默认使用清晰度
203
+ */
204
+ level?: number;
205
+ /**
206
+ * 鉴权token
207
+ */
208
+ xAuthToken?: string;
209
+ /**
210
+ * 延迟内核
211
+ */
212
+ playCore?: number;
213
+ }
214
+ /**
215
+ * 统计数据
216
+ */
217
+ export type StatisticsSetting = Partial<{
218
+ param1: string;
219
+ param2: string;
220
+ param4: string;
221
+ param5: string;
222
+ sessionId: string;
223
+ }>;
224
+ /**
225
+ * 播放器设置的统计数据
226
+ */
227
+ export type PlayerStatisticsSetting = Omit<StatisticsSetting, 'sessionId'>;
228
+ /**
229
+ * 播放类型
230
+ */
231
+ export enum PlayType {
232
+ /**
233
+ * 直播
234
+ */
235
+ LIVE = "live",
236
+ /**
237
+ * 回放
238
+ */
239
+ VOD = "vod",
240
+ /**
241
+ * 暖场图片
242
+ */
243
+ WARM_IMAGE = "warmImage",
244
+ /**
245
+ * 暖场视频
246
+ */
247
+ WARM_VIDEO = "warmVideo",
248
+ /**
249
+ * 等待开始直播
250
+ */
251
+ WAIT_START = "waitStart"
252
+ }
253
+ /**
254
+ * 清晰度类型
255
+ */
256
+ export enum LevelType {
257
+ /**
258
+ * 流畅
259
+ */
260
+ SD = "sd",
261
+ /**
262
+ * 高清
263
+ */
264
+ HD = "hd",
265
+ /**
266
+ * 超清
267
+ */
268
+ FHD = "fhd"
269
+ }
270
+ /**
271
+ * 清晰度列表节点
272
+ */
273
+ export interface LevelItem {
274
+ /** 清晰度类型 */
275
+ type: LevelType;
276
+ /** 级别 */
277
+ level: number;
278
+ }
279
+ /**
280
+ * 线路列表节点
281
+ */
282
+ export interface LineItem {
283
+ /** 线路类型 */
284
+ type: string;
285
+ /** 线路 */
286
+ line: number;
287
+ }
288
+ /**
289
+ * 延迟内核类型
290
+ */
291
+ export enum PlayCoreType {
292
+ /** 普通延迟 */
293
+ CDN = "cdn",
294
+ /** 无延迟 */
295
+ QUICK = "quick"
296
+ }
297
+ /**
298
+ * 延迟内核列表节点
299
+ */
300
+ export interface PlayCoreItem {
301
+ /** 延迟内核类型 */
302
+ type: PlayCoreType;
303
+ /** 延迟内核 */
304
+ core: number;
305
+ /** 是否可启用 */
306
+ enabled: boolean;
307
+ }
308
+ export interface PlayerMediaInfo {
309
+ /** 链接(直播、回放、暖场图片、暖场视频链接) */
310
+ src: string;
311
+ /** 回放视频返回回放时长 */
312
+ duration?: number;
313
+ /** 播放类型 */
314
+ type: typeof PlayType;
315
+ /** 线路选项信息 */
316
+ lines?: {
317
+ /** 线路选项 */
318
+ options: LineItem[];
319
+ /** 当前选中线路 */
320
+ active: number;
321
+ };
322
+ /** 清晰度选项信息 */
323
+ levels?: {
324
+ /** 清晰度选项 */
325
+ options: LevelItem[];
326
+ /** 当前选中清晰度 */
327
+ active: number;
328
+ };
329
+ /** 延迟内核选项信息 */
330
+ playCores?: {
331
+ /** 延迟内核选项 */
332
+ options: PlayCoreItem[];
333
+ /** 当前选中延迟内核 */
334
+ active: number;
335
+ };
336
+ }
337
+
338
+ /**
339
+ * 播放器事件类型
340
+ */
341
+ export enum PlayerEventsType {
342
+ /**
343
+ * 播放器准备完成
344
+ */
345
+ READY = "ready",
346
+ /**
347
+ * 播放器状态变化
348
+ */
349
+ API_STATUS_CHANGE = "api_status_change",
350
+ /**
351
+ * 播放器播放类型变化
352
+ */
353
+ PLAY_TYPE_CHANGE = "play_type_change",
354
+ /**
355
+ * 播放器错误
356
+ */
357
+ ERROR = "error",
358
+ /**
359
+ * 播放器播放
360
+ */
361
+ PLAYING = "playing",
362
+ /**
363
+ * 播放器暂停
364
+ */
365
+ PAUSE = "pause",
366
+ /**
367
+ * 更新媒体信息
368
+ */
369
+ UPDATE_MEDIA_INFO = "update_media_info",
370
+ /**
371
+ * 线路切换
372
+ */
373
+ LINE_CHANGE = "line_change",
374
+ /**
375
+ * 清晰度切换
376
+ */
377
+ LEVEL_CHANGE = "level_change",
378
+ /**
379
+ * 播放配置更新
380
+ * @ignore
381
+ */
382
+ UPDATE_CHANNEL_JSON = "update_channel_json",
383
+ /**
384
+ * 播放状态更新
385
+ * @ignore
386
+ */
387
+ LIVE_STATUS_CHANGE = "live_status_change",
388
+ /**
389
+ * 延迟播放错误, 切换到正常延迟播放
390
+ */
391
+ LATENCY_PLAY_ERROR = "latency_play_error"
392
+ }
393
+ /** 播放器事件 */
394
+ export type PlayerEventMap = {
395
+ /** 播放器就绪 */
396
+ [PlayerEventsType.READY]: () => void;
397
+ /** 播放类型变更 */
398
+ [PlayerEventsType.PLAY_TYPE_CHANGE]: (playType: PlayType) => void;
399
+ /** 播放器错误 */
400
+ [PlayerEventsType.ERROR]: (error: PlayerError) => void;
401
+ /** 更新媒体信息 */
402
+ [PlayerEventsType.UPDATE_MEDIA_INFO]: (mediaInfo: PlayerMediaInfo) => void;
403
+ /** 线路切换 */
404
+ [PlayerEventsType.LINE_CHANGE]: (line: number) => void;
405
+ /** 清晰度切换 */
406
+ [PlayerEventsType.LEVEL_CHANGE]: (level: number) => void;
407
+ /**
408
+ * 播放状态更新
409
+ * @ignore
410
+ */
411
+ [PlayerEventsType.LIVE_STATUS_CHANGE]: (statusInfo: IGetApiStatusResponse) => void;
412
+ /**
413
+ * 播放配置更新
414
+ * @ignore
415
+ */
416
+ [PlayerEventsType.UPDATE_CHANNEL_JSON]: (channelJsonInfo: IChannelJsonConfig) => void;
417
+ /** 延迟播放错误 */
418
+ [PlayerEventsType.LATENCY_PLAY_ERROR]: () => void;
419
+ };
420
+
421
+ export interface PlayerError {
422
+ /**
423
+ * 错误码, 详见`ErrorCode`
424
+ */
425
+ code: string;
426
+ }
427
+ export enum ErrorCode {
428
+ /**
429
+ * 未知错误
430
+ */
431
+ UNKNOWN = "000",
432
+ /**
433
+ * 传入参数非法或鉴权失败
434
+ */
435
+ UN_LEGAL = "001",
436
+ /**
437
+ * 账号异常
438
+ */
439
+ ACCOUNT_ABNORMAL = "002",
440
+ /**
441
+ * 配置加载失败
442
+ */
443
+ CONFIG_LOAD_FAIL = "011"
444
+ }
445
+
446
+ /**
447
+ * 播放器状态
448
+ */
449
+ export enum ApiStatus {
450
+ /**
451
+ * 直播进行中
452
+ */
453
+ LIVE = "live",
454
+ /**
455
+ * 直播结束
456
+ */
457
+ END = "end",
458
+ /**
459
+ * 中途暂停
460
+ */
461
+ STOP = "stop"
462
+ }
463
+ /**
464
+ * 获取API状态接口响应参数
465
+ */
466
+ export interface IGetApiStatusResponse {
467
+ /**
468
+ * 状态
469
+ */
470
+ status: ApiStatus;
471
+ /**
472
+ * 场次ID
473
+ */
474
+ sessionId: string;
475
+ }
476
+ /**
477
+ * 获取API状态接口请求参数
478
+ */
479
+ export interface IGetApiStatusRequest {
480
+ /**
481
+ * 频道ID
482
+ */
483
+ channelId: string;
484
+ /**
485
+ * 流名
486
+ */
487
+ stream: string;
488
+ /**
489
+ * 随机数
490
+ */
491
+ ran: number;
492
+ }
493
+
494
+ /**
495
+ * 多码率配置
496
+ */
497
+ export interface IDefinitions {
498
+ /**
499
+ * 码率
500
+ */
501
+ definition: string;
502
+ /**
503
+ * 地址
504
+ */
505
+ url: string;
506
+ /**
507
+ * m3u8地址
508
+ */
509
+ m3u8: string;
510
+ }
511
+ /**
512
+ * 多码率配置
513
+ */
514
+ export interface IMultirateModel {
515
+ /**
516
+ * 默认码率
517
+ */
518
+ defaultDefinition: string;
519
+ /**
520
+ * 默认码率地址
521
+ */
522
+ defaultDefinitionUrl: string;
523
+ /**
524
+ * 默认码率m3u8地址
525
+ */
526
+ defaultDefinitionM3u8Url: string;
527
+ /**
528
+ * 多码率配置
529
+ */
530
+ definitions: IDefinitions[];
531
+ }
532
+ export interface ILineModel {
533
+ /**
534
+ * flv地址
535
+ */
536
+ flv: string;
537
+ /**
538
+ * m3u8地址
539
+ */
540
+ m3u8: string;
541
+ /**
542
+ * cdn类型
543
+ */
544
+ cdnType: string;
545
+ /**
546
+ * 多码率配置
547
+ */
548
+ multirateModel: IMultirateModel;
549
+ /**
550
+ * 无延迟播放地址
551
+ */
552
+ quickLiveUrl?: string;
553
+ /**
554
+ * 无延迟播放是否开启
555
+ */
556
+ quickLiveEnabled: YN;
557
+ }
558
+ /**
559
+ * 频道配置接口响应加密数据
560
+ */
561
+ export interface IChannelJsonEncryptResponse {
562
+ /**
563
+ * 状态码
564
+ */
565
+ code: number;
566
+ /**
567
+ * 状态信息
568
+ */
569
+ status: string;
570
+ /**
571
+ * 加密数据
572
+ */
573
+ body: string;
574
+ }
575
+ /**
576
+ * 频道播放器配置响应参数
577
+ */
578
+ export interface IChannelJsonConfig {
579
+ /**
580
+ * 流名
581
+ */
582
+ stream: string;
583
+ /**
584
+ * 封面图片
585
+ */
586
+ coverImage: string;
587
+ /**
588
+ * 暖场图片
589
+ */
590
+ waitImage: string;
591
+ /**
592
+ * 暖场视频
593
+ */
594
+ warmUpFlv: string;
595
+ /**
596
+ * m3u8地址
597
+ */
598
+ m3u8Url: string;
599
+ /**
600
+ * 频道直播状态查询频率, 单位秒
601
+ */
602
+ channelLiveStatusQueryFrequency: number;
603
+ /**
604
+ * 线路配置
605
+ */
606
+ lines: ILineModel[];
607
+ /**
608
+ * 回放视频 (mp4格式)
609
+ */
610
+ recordFileUrl: string;
611
+ /**
612
+ * 回放视频(m3u8格式)
613
+ */
614
+ recordFileM3u8Url: string;
615
+ /**
616
+ * 回放时长
617
+ */
618
+ recordFileDuration: number;
619
+ /**
620
+ * 回放场次ID
621
+ */
622
+ recordFileSessionId: string;
623
+ /**
624
+ * 频道详细信息
625
+ */
626
+ channelRestrictModel: {
627
+ /**
628
+ * 直播频道所属的账号情况
629
+ */
630
+ userStatus: string;
631
+ };
632
+ /**
633
+ * 拉流防盗链
634
+ */
635
+ aliPullProtectExpTime: number;
636
+ }
637
+ /**
638
+ * 频道配置接口请求参数
639
+ */
640
+ export interface IChannelJsonRequest {
641
+ /**
642
+ * 随机数
643
+ */
644
+ ran: number;
645
+ }
646
+ export interface IGetNewestPlayUrlsResponse {
647
+ /**
648
+ * flv地址
649
+ */
650
+ flv: string;
651
+ /**
652
+ * m3u8地址
653
+ */
654
+ m3u8: string;
655
+ }
656
+