@give-tech/ec-player 0.0.1-beta.5 → 0.0.1-beta.50
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/dist/decoder/H264Decoder.d.ts +5 -0
- package/dist/decoder/H264Decoder.d.ts.map +1 -1
- package/dist/decoder/HEVCDecoder.d.ts +5 -0
- package/dist/decoder/HEVCDecoder.d.ts.map +1 -1
- package/dist/decoder/WASMLoader.d.ts +31 -2
- package/dist/decoder/WASMLoader.d.ts.map +1 -1
- package/dist/demuxer/fMP4Demuxer.d.ts +28 -4
- package/dist/demuxer/fMP4Demuxer.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1293 -244
- package/dist/index.js.map +1 -1
- package/dist/player/BasePlayer.d.ts +21 -0
- package/dist/player/BasePlayer.d.ts.map +1 -1
- package/dist/player/EcPlayerCore.d.ts +9 -0
- package/dist/player/EcPlayerCore.d.ts.map +1 -1
- package/dist/player/FLVPlayer.d.ts +24 -0
- package/dist/player/FLVPlayer.d.ts.map +1 -1
- package/dist/player/HLSPlayer.d.ts +55 -1
- package/dist/player/HLSPlayer.d.ts.map +1 -1
- package/dist/prefetch/BasePrefetcher.d.ts.map +1 -1
- package/dist/prefetch/SegmentPrefetcher.d.ts +15 -6
- package/dist/prefetch/SegmentPrefetcher.d.ts.map +1 -1
- package/dist/prefetch/StreamPrefetcher.d.ts.map +1 -1
- package/dist/prefetch/index.d.ts +1 -1
- package/dist/prefetch/index.d.ts.map +1 -1
- package/dist/prefetch/types.d.ts +17 -0
- package/dist/prefetch/types.d.ts.map +1 -1
- package/dist/renderer/Canvas2DRenderer.d.ts +4 -0
- package/dist/renderer/Canvas2DRenderer.d.ts.map +1 -1
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/wasm/decoder.js +19 -0
- package/wasm/decoder.wasm +0 -0
|
@@ -38,6 +38,7 @@ export declare abstract class BasePlayer<Config extends PlayerConfig = PlayerCon
|
|
|
38
38
|
protected decodeLoopAbort: boolean;
|
|
39
39
|
protected _currentTime: number;
|
|
40
40
|
protected _duration: number;
|
|
41
|
+
protected _playbackRate: number;
|
|
41
42
|
protected state: PlayerState;
|
|
42
43
|
constructor(config: Config, callbacks: PlayerCallbacks, defaults: Required<Config>);
|
|
43
44
|
/**
|
|
@@ -61,6 +62,17 @@ export declare abstract class BasePlayer<Config extends PlayerConfig = PlayerCon
|
|
|
61
62
|
* 初始化解码器
|
|
62
63
|
*/
|
|
63
64
|
initDecoder(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* 预初始化解码器(并行加载优化)
|
|
67
|
+
* 在数据下载的同时加载 WASM 模块
|
|
68
|
+
* 返回初始化结果,供 finishInitDecoder 使用
|
|
69
|
+
*/
|
|
70
|
+
preInitDecoder(): Promise<unknown>;
|
|
71
|
+
/**
|
|
72
|
+
* 完成解码器初始化
|
|
73
|
+
* 使用 preInitDecoder 的结果完成初始化
|
|
74
|
+
*/
|
|
75
|
+
finishInitDecoder(_initResult: unknown): Promise<void>;
|
|
64
76
|
/**
|
|
65
77
|
* 开始播放
|
|
66
78
|
*/
|
|
@@ -85,6 +97,15 @@ export declare abstract class BasePlayer<Config extends PlayerConfig = PlayerCon
|
|
|
85
97
|
* 获取总时长(毫秒)
|
|
86
98
|
*/
|
|
87
99
|
getDuration(): number;
|
|
100
|
+
/**
|
|
101
|
+
* 获取播放倍速
|
|
102
|
+
*/
|
|
103
|
+
getPlaybackRate(): number;
|
|
104
|
+
/**
|
|
105
|
+
* 设置播放倍速
|
|
106
|
+
* @param rate 倍速值(1 = 正常,2 = 2倍速等)
|
|
107
|
+
*/
|
|
108
|
+
setPlaybackRate(rate: number): void;
|
|
88
109
|
/**
|
|
89
110
|
* 设置当前时间(供子类调用)
|
|
90
111
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasePlayer.d.ts","sourceRoot":"","sources":["../../src/player/BasePlayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGxE,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,2BAA2B;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAGD,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAMxD,CAAA;AAED,8BAAsB,UAAU,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;IACzE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAClC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAA;IAEpC,SAAS,CAAC,UAAU,aAAmB;IACvC,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAO;IAC5C,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAO;IAClD,SAAS,CAAC,kBAAkB,UAAQ;IAEpC,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAO;IAC1C,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,CAAK;IACxC,SAAS,CAAC,aAAa,SAAI;IAC3B,SAAS,CAAC,eAAe,UAAQ;IAGjC,SAAS,CAAC,YAAY,SAAI;IAC1B,SAAS,CAAC,SAAS,SAAI;
|
|
1
|
+
{"version":3,"file":"BasePlayer.d.ts","sourceRoot":"","sources":["../../src/player/BasePlayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,6 +56,15 @@ export declare class EcPlayerCore {
|
|
|
56
56
|
* 获取总时长(毫秒)
|
|
57
57
|
*/
|
|
58
58
|
getDuration(): number;
|
|
59
|
+
/**
|
|
60
|
+
* 获取播放倍速
|
|
61
|
+
*/
|
|
62
|
+
getPlaybackRate(): number;
|
|
63
|
+
/**
|
|
64
|
+
* 设置播放倍速
|
|
65
|
+
* @param rate 倍速值(1 = 正常,2 = 2倍速等)
|
|
66
|
+
*/
|
|
67
|
+
setPlaybackRate(rate: number): void;
|
|
59
68
|
/**
|
|
60
69
|
* 获取播放状态
|
|
61
70
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EcPlayerCore.d.ts","sourceRoot":"","sources":["../../src/player/EcPlayerCore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAyB,MAAM,cAAc,CAAA;AAGnF,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7E,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG5D,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,uBAAuB;IACvB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AAGD,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAgC;gBAEpC,MAAM,GAAE,kBAAuB,EAAE,SAAS,GAAE,eAAoB;IAW5E;;;;OAIG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"EcPlayerCore.d.ts","sourceRoot":"","sources":["../../src/player/EcPlayerCore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAyB,MAAM,cAAc,CAAA;AAGnF,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7E,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG5D,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,uBAAuB;IACvB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AAGD,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAgC;gBAEpC,MAAM,GAAE,kBAAuB,EAAE,SAAS,GAAE,eAAoB;IAW5E;;;;OAIG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDxD;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;;OAGG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,QAAQ,IAAI,WAAW;IAyBvB;;OAEG;IACH,iBAAiB,IAAI,YAAY;IAIjC;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf;;;OAGG;IACH,SAAS,IAAI,UAAU,GAAG,IAAI;CAG/B"}
|
|
@@ -33,6 +33,8 @@ export declare class FLVPlayer extends BasePlayer<FLVPlayerConfig> {
|
|
|
33
33
|
private liveReader;
|
|
34
34
|
private liveDownloadAbort;
|
|
35
35
|
private _lastQueuedTimestamp;
|
|
36
|
+
private abortController;
|
|
37
|
+
private readyFired;
|
|
36
38
|
private _currentDownloadSpeed;
|
|
37
39
|
get videoTagQueue(): QueuedVideoTag[];
|
|
38
40
|
get currentCodecId(): number;
|
|
@@ -46,6 +48,16 @@ export declare class FLVPlayer extends BasePlayer<FLVPlayerConfig> {
|
|
|
46
48
|
* 初始化解码器(覆盖基类方法,支持 AVC 和 HEVC)
|
|
47
49
|
*/
|
|
48
50
|
initDecoder(): Promise<void>;
|
|
51
|
+
private _decoderInitContext;
|
|
52
|
+
/**
|
|
53
|
+
* 预初始化解码器(并行加载优化)
|
|
54
|
+
* 在数据下载的同时加载 WASM 模块
|
|
55
|
+
*/
|
|
56
|
+
preInitDecoder(): Promise<unknown>;
|
|
57
|
+
/**
|
|
58
|
+
* 完成解码器初始化(使用预加载的 WASM)
|
|
59
|
+
*/
|
|
60
|
+
finishInitDecoder(_initResult: unknown): Promise<void>;
|
|
49
61
|
/**
|
|
50
62
|
* 根据视频分辨率动态调整缓冲参数
|
|
51
63
|
*/
|
|
@@ -58,6 +70,10 @@ export declare class FLVPlayer extends BasePlayer<FLVPlayerConfig> {
|
|
|
58
70
|
* 暂停播放
|
|
59
71
|
*/
|
|
60
72
|
pause(): void;
|
|
73
|
+
/**
|
|
74
|
+
* 销毁播放器,释放所有资源
|
|
75
|
+
*/
|
|
76
|
+
destroy(): void;
|
|
61
77
|
/**
|
|
62
78
|
* 处理预取缓冲区数据(供预取器调用)
|
|
63
79
|
*/
|
|
@@ -69,6 +85,11 @@ export declare class FLVPlayer extends BasePlayer<FLVPlayerConfig> {
|
|
|
69
85
|
* 跳转到指定时间
|
|
70
86
|
*/
|
|
71
87
|
seek(time: number): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* 设置播放倍速(覆盖基类方法)
|
|
90
|
+
* 切换倍速时需要重置时间基准,避免跳跃
|
|
91
|
+
*/
|
|
92
|
+
setPlaybackRate(rate: number): void;
|
|
72
93
|
/**
|
|
73
94
|
* 解码循环
|
|
74
95
|
*/
|
|
@@ -76,6 +97,8 @@ export declare class FLVPlayer extends BasePlayer<FLVPlayerConfig> {
|
|
|
76
97
|
/**
|
|
77
98
|
* 流式加载 FLV 文件
|
|
78
99
|
*/
|
|
100
|
+
private _totalFileSize;
|
|
101
|
+
private _downloadedBytes;
|
|
79
102
|
private loadFLV;
|
|
80
103
|
/**
|
|
81
104
|
* 初始化预取器
|
|
@@ -121,6 +144,7 @@ export declare class FLVPlayer extends BasePlayer<FLVPlayerConfig> {
|
|
|
121
144
|
private bufferEmptyStartTime;
|
|
122
145
|
private playStartTimeOffset;
|
|
123
146
|
private resyncCount;
|
|
147
|
+
private _lastRafTime;
|
|
124
148
|
/**
|
|
125
149
|
* 渲染循环
|
|
126
150
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FLVPlayer.d.ts","sourceRoot":"","sources":["../../src/player/FLVPlayer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAyB,MAAM,cAAc,CAAA;AAGhE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAuB,MAAM,UAAU,CAAA;AA2BjF,UAAU,cAAc;IACtB,GAAG,EAAE,WAAW,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;CACvB;AAoDD,qBAAa,SAAU,SAAQ,UAAU,CAAC,eAAe,CAAC;IAExD,OAAO,CAAC,UAAU,CAAmB;IAGrC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,WAAW,CAA2B;IAG9C,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,eAAe,CAAuB;IAG9C,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,cAAc,CAAuB;IAG7C,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,eAAe,CAAI;IAG3B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,WAAW,CAAI;IAGvB,OAAO,CAAC,UAAU,CAAmC;IAGrD,OAAO,CAAC,UAAU,CAAuD;IACzE,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,oBAAoB,CAAK;IAGjC,OAAO,CAAC,qBAAqB,CAAI;IAGjC,IAAI,aAAa,IAAI,cAAc,EAAE,CAA+B;IACpE,IAAI,cAAc,IAAI,MAAM,CAAgC;IAC5D,IAAI,mBAAmB,IAAI,MAAM,CAAqC;gBAE1D,MAAM,GAAE,eAAoB,EAAE,SAAS,GAAE,OAAO,UAAU,EAAE,eAAoB;IAI5F;;OAEG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"FLVPlayer.d.ts","sourceRoot":"","sources":["../../src/player/FLVPlayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* HLS 播放器
|
|
3
3
|
*
|
|
4
4
|
* 支持 HLS TS 和 fMP4 格式
|
|
5
|
+
* 支持 H.264 (AVC) 和 H.265 (HEVC) 编码
|
|
5
6
|
*/
|
|
6
7
|
import { type VideoSample } from '../demuxer/fMP4Demuxer';
|
|
7
8
|
import { BasePlayer } from './BasePlayer';
|
|
@@ -9,6 +10,7 @@ import type { HLSPlayerConfig, NALUnit } from '../types';
|
|
|
9
10
|
interface QueuedNAL {
|
|
10
11
|
nalUnit: NALUnit;
|
|
11
12
|
pts: number;
|
|
13
|
+
segmentDuration?: number;
|
|
12
14
|
}
|
|
13
15
|
interface QueuedSample {
|
|
14
16
|
sample: VideoSample;
|
|
@@ -18,19 +20,27 @@ export declare class HLSPlayer extends BasePlayer<HLSPlayerConfig> {
|
|
|
18
20
|
private pesExtractor;
|
|
19
21
|
private nalParser;
|
|
20
22
|
private fmp4Demuxer;
|
|
23
|
+
private hevcDecoder;
|
|
21
24
|
private isPrefetching;
|
|
22
25
|
private currentSegmentIndex;
|
|
23
26
|
private segments;
|
|
24
27
|
private fmp4Segments;
|
|
25
28
|
private initSegment;
|
|
26
29
|
private _isFMP4;
|
|
30
|
+
private _isHevc;
|
|
27
31
|
private currentPlaylistUrl;
|
|
28
32
|
private _nalQueue;
|
|
29
33
|
private _sampleQueue;
|
|
34
|
+
private _currentSegmentDuration;
|
|
30
35
|
private prefetcher;
|
|
36
|
+
private abortController;
|
|
37
|
+
private readyFired;
|
|
31
38
|
get isFMP4(): boolean;
|
|
39
|
+
get isHevc(): boolean;
|
|
32
40
|
get nalQueue(): QueuedNAL[];
|
|
33
41
|
get sampleQueue(): QueuedSample[];
|
|
42
|
+
/** 获取 AbortSignal(供预取器使用) */
|
|
43
|
+
getAbortSignal(): AbortSignal;
|
|
34
44
|
constructor(config?: HLSPlayerConfig, callbacks?: import('../types').PlayerCallbacks);
|
|
35
45
|
/**
|
|
36
46
|
* 加载 HLS 播放列表
|
|
@@ -40,14 +50,32 @@ export declare class HLSPlayer extends BasePlayer<HLSPlayerConfig> {
|
|
|
40
50
|
* 初始化解码器(覆盖基类方法,添加 fMP4 支持)
|
|
41
51
|
*/
|
|
42
52
|
initDecoder(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* 预初始化解码器(并行加载优化)
|
|
55
|
+
* 在数据下载的同时加载 WASM 模块
|
|
56
|
+
*/
|
|
57
|
+
preInitDecoder(): Promise<unknown>;
|
|
58
|
+
/**
|
|
59
|
+
* 完成解码器初始化(使用预加载的 WASM)
|
|
60
|
+
*/
|
|
61
|
+
finishInitDecoder(initResult: unknown): Promise<void>;
|
|
43
62
|
/**
|
|
44
63
|
* 开始播放(覆盖基类方法,使用自定义渲染循环)
|
|
45
64
|
*/
|
|
46
65
|
play(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* 销毁播放器,释放所有资源
|
|
68
|
+
*/
|
|
69
|
+
destroy(): void;
|
|
47
70
|
/**
|
|
48
71
|
* 跳转到指定时间
|
|
49
72
|
*/
|
|
50
73
|
seek(time: number): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* 设置播放倍速(覆盖基类方法)
|
|
76
|
+
* 切换倍速时需要重置时间基准,避免跳跃
|
|
77
|
+
*/
|
|
78
|
+
setPlaybackRate(rate: number): void;
|
|
51
79
|
/**
|
|
52
80
|
* 解码循环
|
|
53
81
|
*/
|
|
@@ -63,15 +91,27 @@ export declare class HLSPlayer extends BasePlayer<HLSPlayerConfig> {
|
|
|
63
91
|
/**
|
|
64
92
|
* 解析 TS 数据
|
|
65
93
|
*/
|
|
66
|
-
parseTSData(tsData: Uint8Array): number;
|
|
94
|
+
parseTSData(tsData: Uint8Array, segmentDuration?: number): number;
|
|
67
95
|
/**
|
|
68
96
|
* 加载 fMP4 初始化段
|
|
69
97
|
*/
|
|
70
98
|
private loadInitSegment;
|
|
99
|
+
/**
|
|
100
|
+
* 加载新的初始化段(用于不连续性流)
|
|
101
|
+
*/
|
|
102
|
+
loadNewInitSegment(uri: string): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* 初始化 HEVC 解码器
|
|
105
|
+
*/
|
|
106
|
+
private initHevcDecoder;
|
|
71
107
|
/**
|
|
72
108
|
* 从 avcC 初始化解码器
|
|
73
109
|
*/
|
|
74
110
|
private initDecoderFromAvcC;
|
|
111
|
+
/**
|
|
112
|
+
* 从 hvcC 初始化 HEVC 解码器
|
|
113
|
+
*/
|
|
114
|
+
private initDecoderFromHvcC;
|
|
75
115
|
/**
|
|
76
116
|
* 解析 HLS 播放列表
|
|
77
117
|
*/
|
|
@@ -86,6 +126,7 @@ export declare class HLSPlayer extends BasePlayer<HLSPlayerConfig> {
|
|
|
86
126
|
* 解码 fMP4 sample
|
|
87
127
|
*/
|
|
88
128
|
private decodeSample;
|
|
129
|
+
private _nalCountInCurrentSegment;
|
|
89
130
|
/**
|
|
90
131
|
* 解码单个 NAL 单元
|
|
91
132
|
*/
|
|
@@ -94,6 +135,19 @@ export declare class HLSPlayer extends BasePlayer<HLSPlayerConfig> {
|
|
|
94
135
|
* 渲染循环
|
|
95
136
|
*/
|
|
96
137
|
private lastRenderTime;
|
|
138
|
+
private playStartTime;
|
|
139
|
+
private accumulatedMediaTime;
|
|
140
|
+
private _lastLogTime;
|
|
141
|
+
private _lastRafTime;
|
|
142
|
+
/**
|
|
143
|
+
* 渲染循环 - 基于 duration 累加控制播放速度
|
|
144
|
+
*
|
|
145
|
+
* 核心原理:
|
|
146
|
+
* 1. 使用帧的 duration(从容器中提取)来控制播放节奏
|
|
147
|
+
* 2. 累加已播放帧的 duration 得到 accumulatedMediaTime
|
|
148
|
+
* 3. 比较 elapsedWallTime 和 accumulatedMediaTime 来决定是否渲染下一帧
|
|
149
|
+
* 4. 完全不受 PTS 跳跃影响
|
|
150
|
+
*/
|
|
97
151
|
protected renderLoop: (timestamp?: number) => void;
|
|
98
152
|
}
|
|
99
153
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HLSPlayer.d.ts","sourceRoot":"","sources":["../../src/player/HLSPlayer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"HLSPlayer.d.ts","sourceRoot":"","sources":["../../src/player/HLSPlayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasePrefetcher.d.ts","sourceRoot":"","sources":["../../src/prefetch/BasePrefetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;GAQG;AACH,8BAAsB,cAAc,CAClC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,SAAS,gBAAgB,GAAG,gBAAgB;IAEnD,SAAS,CAAC,MAAM,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAA;IACxC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IAGtD,SAAS,CAAC,iBAAiB,SAAI;IAC/B,SAAS,CAAC,kBAAkB,SAAI;IAChC,SAAS,CAAC,gBAAgB,SAAI;IAC9B,SAAS,CAAC,iBAAiB,SAAI;IAC/B,SAAS,CAAC,YAAY,SAAI;IAG1B,SAAS,CAAC,SAAS,SAAI;gBAGrB,MAAM,EAAE,OAAO,EACf,SAAS,GAAE,mBAAwB;IAOrC;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,OAAO;IASvC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;cACa,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"BasePrefetcher.d.ts","sourceRoot":"","sources":["../../src/prefetch/BasePrefetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;GAQG;AACH,8BAAsB,cAAc,CAClC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,SAAS,gBAAgB,GAAG,gBAAgB;IAEnD,SAAS,CAAC,MAAM,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAA;IACxC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IAGtD,SAAS,CAAC,iBAAiB,SAAI;IAC/B,SAAS,CAAC,kBAAkB,SAAI;IAChC,SAAS,CAAC,gBAAgB,SAAI;IAC9B,SAAS,CAAC,iBAAiB,SAAI;IAC/B,SAAS,CAAC,YAAY,SAAI;IAG1B,SAAS,CAAC,SAAS,SAAI;gBAGrB,MAAM,EAAE,OAAO,EACf,SAAS,GAAE,mBAAwB;IAOrC;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,OAAO;IASvC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;cACa,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC7C;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAkBtD;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAoBvD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAOtD;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK9D;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;cACa,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,QAAQ,CAAC,YAAY,IAAI,MAAM;IAE/B;;OAEG;IACH,QAAQ,CAAC,cAAc,IAAI,OAAO;IAElC;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,IAAI;CACzB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 管理分片下载队列,支持 TS 和 fMP4 格式
|
|
5
5
|
*/
|
|
6
6
|
import { BasePrefetcher } from './BasePrefetcher';
|
|
7
|
-
import type { SegmentPrefetcherConfig, PrefetcherStatus, PrefetcherCallbacks, PrefetchQueueItem } from './types';
|
|
7
|
+
import type { SegmentPrefetcherConfig, PrefetcherStatus, PrefetcherCallbacks, PrefetchQueueItem, DownloadProgress } from './types';
|
|
8
8
|
/**
|
|
9
9
|
* 分片信息
|
|
10
10
|
*/
|
|
@@ -18,6 +18,8 @@ export interface SegmentInfo {
|
|
|
18
18
|
start: number;
|
|
19
19
|
end: number;
|
|
20
20
|
};
|
|
21
|
+
/** 初始化段 URI(用于不连续性流) */
|
|
22
|
+
initSegmentUri?: string;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* 分片预取器状态
|
|
@@ -40,6 +42,8 @@ export interface SegmentPrefetcherCallbacks extends PrefetcherCallbacks {
|
|
|
40
42
|
onSegmentFetched?: (segmentIndex: number, data: Uint8Array) => void;
|
|
41
43
|
/** 分片解析完成回调 */
|
|
42
44
|
onSegmentParsed?: (segmentIndex: number, itemCount: number) => void;
|
|
45
|
+
/** 下载进度回调 */
|
|
46
|
+
onDownloadProgress?: (progress: DownloadProgress) => void;
|
|
43
47
|
}
|
|
44
48
|
/**
|
|
45
49
|
* 分片预取器
|
|
@@ -47,6 +51,7 @@ export interface SegmentPrefetcherCallbacks extends PrefetcherCallbacks {
|
|
|
47
51
|
* 用于 HLS 流的分片预取,支持:
|
|
48
52
|
* - TS 分片
|
|
49
53
|
* - fMP4 分片(支持字节范围)
|
|
54
|
+
* - 并行下载多个分片
|
|
50
55
|
*/
|
|
51
56
|
export declare abstract class SegmentPrefetcher extends BasePrefetcher<SegmentPrefetcherConfig, SegmentPrefetcherStatus> {
|
|
52
57
|
/** 预取队列:存储已下载但尚未解析的分片 */
|
|
@@ -59,8 +64,10 @@ export declare abstract class SegmentPrefetcher extends BasePrefetcher<SegmentPr
|
|
|
59
64
|
protected fetchedSegmentCount: number;
|
|
60
65
|
/** 基础 URL(用于解析相对路径) */
|
|
61
66
|
protected baseUrl: string;
|
|
62
|
-
/**
|
|
63
|
-
protected
|
|
67
|
+
/** 正在预取的分片数量(支持并行下载) */
|
|
68
|
+
protected activePrefetchCount: number;
|
|
69
|
+
/** 正在下载的分片索引集合 */
|
|
70
|
+
protected prefetchingIndexes: Set<number>;
|
|
64
71
|
constructor(config: SegmentPrefetcherConfig, callbacks?: SegmentPrefetcherCallbacks);
|
|
65
72
|
/**
|
|
66
73
|
* 创建初始状态
|
|
@@ -83,15 +90,16 @@ export declare abstract class SegmentPrefetcher extends BasePrefetcher<SegmentPr
|
|
|
83
90
|
*/
|
|
84
91
|
shouldPrefetch(): boolean;
|
|
85
92
|
/**
|
|
86
|
-
*
|
|
93
|
+
* 执行预取(支持并行下载)
|
|
87
94
|
*/
|
|
88
95
|
doPrefetch(): Promise<void>;
|
|
89
96
|
/**
|
|
90
97
|
* 处理预取队列中的数据
|
|
91
98
|
*
|
|
99
|
+
* @param maxSegments 最多处理的分片数量(默认处理所有)
|
|
92
100
|
* @returns 是否有数据被处理
|
|
93
101
|
*/
|
|
94
|
-
processQueue(): boolean;
|
|
102
|
+
processQueue(maxSegments?: number): boolean;
|
|
95
103
|
/**
|
|
96
104
|
* 重置状态
|
|
97
105
|
*/
|
|
@@ -113,8 +121,9 @@ export declare abstract class SegmentPrefetcher extends BasePrefetcher<SegmentPr
|
|
|
113
121
|
*
|
|
114
122
|
* @param data 分片数据
|
|
115
123
|
* @param index 分片索引
|
|
124
|
+
* @param segmentDuration 分片时长(秒)
|
|
116
125
|
* @returns 解析出的项目数量
|
|
117
126
|
*/
|
|
118
|
-
abstract parseSegment(data: Uint8Array, index: number): number;
|
|
127
|
+
abstract parseSegment(data: Uint8Array, index: number, segmentDuration?: number): number;
|
|
119
128
|
}
|
|
120
129
|
//# sourceMappingURL=SegmentPrefetcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentPrefetcher.d.ts","sourceRoot":"","sources":["../../src/prefetch/SegmentPrefetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"SegmentPrefetcher.d.ts","sourceRoot":"","sources":["../../src/prefetch/SegmentPrefetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,SAAS,CAAA;AAEhB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa;IACb,GAAG,EAAE,MAAM,CAAA;IACX,cAAc;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,uBAAuB;IACvB,SAAS,CAAC,EAAE;QACV,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,wBAAwB;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,kBAAkB;IAClB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,qBAAqB;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,eAAe;IACf,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB;IACrE,eAAe;IACf,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACnE,eAAe;IACf,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACnE,aAAa;IACb,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC1D;AAED;;;;;;;GAOG;AACH,8BAAsB,iBAAkB,SAAQ,cAAc,CAC5D,uBAAuB,EACvB,uBAAuB,CACxB;IACC,yBAAyB;IACzB,SAAS,CAAC,aAAa,EAAE,iBAAiB,EAAE,CAAK;IAEjD,WAAW;IACX,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAK;IAEtC,aAAa;IACb,SAAS,CAAC,mBAAmB,SAAI;IAEjC,eAAe;IACf,SAAS,CAAC,mBAAmB,SAAI;IAEjC,uBAAuB;IACvB,SAAS,CAAC,OAAO,SAAK;IAEtB,wBAAwB;IACxB,SAAS,CAAC,mBAAmB,SAAI;IAEjC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,cAAoB;gBAG9C,MAAM,EAAE,uBAAuB,EAC/B,SAAS,GAAE,0BAA+B;IAK5C;;OAEG;cACgB,kBAAkB,IAAI,uBAAuB;IAUhE;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAc3D;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY3C;;OAEG;IACM,YAAY,IAAI,MAAM;IAI/B;;OAEG;IACM,cAAc,IAAI,OAAO;IAoBlC;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2E1C;;;;;OAKG;IACH,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO;IA2C3C;;OAEG;IACM,OAAO,IAAI,IAAI;IASxB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAM1B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAE/E;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM;CACzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamPrefetcher.d.ts","sourceRoot":"","sources":["../../src/prefetch/StreamPrefetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,SAAS,CAAA;AAEhB;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,aAAa;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc;IACd,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,aAAa;IACb,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,cAAc;IACd,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;CACrD;AAED;;;;;;;GAOG;AACH,8BAAsB,gBAAiB,SAAQ,cAAc,CAC3D,sBAAsB,EACtB,sBAAsB,CACvB;IACC,YAAY;IACZ,SAAS,CAAC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAO;IAElD,gBAAgB;IAChB,SAAS,CAAC,YAAY,SAAI;IAE1B,WAAW;IACX,SAAS,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,GAAG,IAAI,CAAO;IAEvE,aAAa;IACb,SAAS,CAAC,gBAAgB,UAAQ;IAElC,iBAAiB;IACjB,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IAEtD,aAAa;IACb,SAAS,CAAC,oBAAoB,SAAI;gBAGhC,MAAM,EAAE,sBAAsB,EAC9B,SAAS,GAAE,yBAA8B;IAK3C;;OAEG;cACgB,kBAAkB,IAAI,sBAAsB;IAS/D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI;IA+B1F;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAyB9C;;OAEG;IACM,YAAY,IAAI,MAAM;IAI/B;;OAEG;IACM,cAAc,IAAI,OAAO;IAWlC;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"StreamPrefetcher.d.ts","sourceRoot":"","sources":["../../src/prefetch/StreamPrefetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAEnB,MAAM,SAAS,CAAA;AAEhB;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,aAAa;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc;IACd,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,aAAa;IACb,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,cAAc;IACd,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;CACrD;AAED;;;;;;;GAOG;AACH,8BAAsB,gBAAiB,SAAQ,cAAc,CAC3D,sBAAsB,EACtB,sBAAsB,CACvB;IACC,YAAY;IACZ,SAAS,CAAC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAO;IAElD,gBAAgB;IAChB,SAAS,CAAC,YAAY,SAAI;IAE1B,WAAW;IACX,SAAS,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,GAAG,IAAI,CAAO;IAEvE,aAAa;IACb,SAAS,CAAC,gBAAgB,UAAQ;IAElC,iBAAiB;IACjB,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IAEtD,aAAa;IACb,SAAS,CAAC,oBAAoB,SAAI;gBAGhC,MAAM,EAAE,sBAAsB,EAC9B,SAAS,GAAE,yBAA8B;IAK3C;;OAEG;cACgB,kBAAkB,IAAI,sBAAsB;IAS/D;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI;IA+B1F;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAyB9C;;OAEG;IACM,YAAY,IAAI,MAAM;IAI/B;;OAEG;IACM,cAAc,IAAI,OAAO;IAWlC;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD1C;;;;OAIG;IACH,aAAa,IAAI,OAAO;IAoBxB;;OAEG;IACH,aAAa,IAAI,kBAAkB;IAQnC;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IAOlC;;OAEG;IACM,OAAO,IAAI,IAAI;IASxB;;OAEG;IACH,cAAc,IAAI,IAAI;IAUtB;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAM7B;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG;QAC5C,aAAa;QACb,UAAU,EAAE,OAAO,CAAA;QACnB,cAAc;QACd,cAAc,EAAE,MAAM,CAAA;KACvB;CACF"}
|
package/dist/prefetch/index.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ export { SegmentPrefetcher } from './SegmentPrefetcher';
|
|
|
8
8
|
export type { SegmentInfo, SegmentPrefetcherStatus, SegmentPrefetcherCallbacks } from './SegmentPrefetcher';
|
|
9
9
|
export { StreamPrefetcher } from './StreamPrefetcher';
|
|
10
10
|
export type { StreamPrefetcherStatus, StreamPrefetcherCallbacks } from './StreamPrefetcher';
|
|
11
|
-
export type { PrefetcherConfig, PrefetcherStatus, PrefetcherCallbacks, SegmentPrefetcherConfig, StreamPrefetcherConfig, PrefetchQueueItem, DownloadBufferInfo } from './types';
|
|
11
|
+
export type { PrefetcherConfig, PrefetcherStatus, PrefetcherCallbacks, DownloadProgress, SegmentPrefetcherConfig, StreamPrefetcherConfig, PrefetchQueueItem, DownloadBufferInfo } from './types';
|
|
12
12
|
export { DEFAULT_PREFETCHER_CONFIG, DEFAULT_SEGMENT_PREFETCHER_CONFIG, DEFAULT_STREAM_PREFETCHER_CONFIG } from './types';
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prefetch/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EACV,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAEhB,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prefetch/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EACV,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAEhB,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,SAAS,CAAA"}
|
package/dist/prefetch/types.d.ts
CHANGED
|
@@ -31,6 +31,19 @@ export interface PrefetcherStatus {
|
|
|
31
31
|
/** 预取错误信息 */
|
|
32
32
|
lastError?: string;
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* 下载进度信息
|
|
36
|
+
*/
|
|
37
|
+
export interface DownloadProgress {
|
|
38
|
+
/** 当前下载的分片索引 */
|
|
39
|
+
segmentIndex: number;
|
|
40
|
+
/** 已下载字节 */
|
|
41
|
+
loaded: number;
|
|
42
|
+
/** 总字节数(如果服务器提供 Content-Length) */
|
|
43
|
+
total?: number;
|
|
44
|
+
/** 下载速度 (bytes/s) */
|
|
45
|
+
speed?: number;
|
|
46
|
+
}
|
|
34
47
|
/**
|
|
35
48
|
* 预取器回调
|
|
36
49
|
*/
|
|
@@ -52,6 +65,8 @@ export declare const DEFAULT_PREFETCHER_CONFIG: PrefetcherConfig;
|
|
|
52
65
|
export interface SegmentPrefetcherConfig extends PrefetcherConfig {
|
|
53
66
|
/** 提前预取的分片数量 */
|
|
54
67
|
prefetchAhead: number;
|
|
68
|
+
/** 最大并行下载数 */
|
|
69
|
+
maxConcurrentPrefetch: number;
|
|
55
70
|
}
|
|
56
71
|
/**
|
|
57
72
|
* 默认分片预取器配置
|
|
@@ -78,6 +93,8 @@ export interface PrefetchQueueItem {
|
|
|
78
93
|
segmentIndex: number;
|
|
79
94
|
/** 获取时间 */
|
|
80
95
|
fetchTime: number;
|
|
96
|
+
/** 分片时长(秒) */
|
|
97
|
+
segmentDuration?: number;
|
|
81
98
|
}
|
|
82
99
|
/**
|
|
83
100
|
* 下载缓冲区信息(流式模式)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prefetch/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB;IACjB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,kBAAkB;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa;IACb,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACnD,aAAa;IACb,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,WAAW;IACX,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAKvC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prefetch/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB;IACjB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,kBAAkB;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa;IACb,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACnD,aAAa;IACb,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,WAAW;IACX,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAKvC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc;IACd,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,uBAI/C,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,cAAc;IACd,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,gCAAgC,EAAE,sBAK9C,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU;IACV,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACzB,YAAY;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU;IACV,QAAQ,EAAE,MAAM,CAAA;CACjB"}
|
|
@@ -9,6 +9,10 @@ export declare class Canvas2DRenderer {
|
|
|
9
9
|
private lastFpsUpdate;
|
|
10
10
|
private lastFps;
|
|
11
11
|
constructor(canvas: HTMLCanvasElement);
|
|
12
|
+
/**
|
|
13
|
+
* 清除 canvas 内容
|
|
14
|
+
*/
|
|
15
|
+
clear(): void;
|
|
12
16
|
render(frame: VideoFrame): void;
|
|
13
17
|
updateFps(): number;
|
|
14
18
|
getCanvas(): HTMLCanvasElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canvas2DRenderer.d.ts","sourceRoot":"","sources":["../../src/renderer/Canvas2DRenderer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,GAAG,CAAwC;IACnD,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,OAAO,CAAI;gBAEP,MAAM,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"Canvas2DRenderer.d.ts","sourceRoot":"","sources":["../../src/renderer/Canvas2DRenderer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,GAAG,CAAwC;IACnD,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,OAAO,CAAI;gBAEP,MAAM,EAAE,iBAAiB;IAUrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAY/B,SAAS,IAAI,MAAM;IAWnB,SAAS,IAAI,iBAAiB;CAG/B"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ export interface VideoFrame {
|
|
|
5
5
|
width: number;
|
|
6
6
|
height: number;
|
|
7
7
|
data: Uint8Array;
|
|
8
|
+
pts?: number;
|
|
9
|
+
dts?: number;
|
|
10
|
+
duration?: number;
|
|
8
11
|
}
|
|
9
12
|
export interface NALUnit {
|
|
10
13
|
type: number;
|
|
@@ -27,6 +30,8 @@ export interface PlayerState {
|
|
|
27
30
|
isPlaying: boolean;
|
|
28
31
|
isLoaded: boolean;
|
|
29
32
|
isLoading: boolean;
|
|
33
|
+
isBuffering: boolean;
|
|
34
|
+
bufferingProgress?: number;
|
|
30
35
|
fps: number;
|
|
31
36
|
resolution: string;
|
|
32
37
|
decoded: number;
|
|
@@ -39,14 +44,28 @@ export interface PlayerState {
|
|
|
39
44
|
downloadSpeed: number;
|
|
40
45
|
currentTime: number;
|
|
41
46
|
duration: number;
|
|
47
|
+
playbackRate: number;
|
|
48
|
+
loadingStage?: LoadingStage;
|
|
49
|
+
}
|
|
50
|
+
export type LoadingStage = 'connecting' | 'detected' | 'downloading' | 'loading' | 'loading-wasm' | 'initializing' | 'buffering' | 'ready';
|
|
51
|
+
export interface LoadingStageInfo {
|
|
52
|
+
stage: LoadingStage;
|
|
53
|
+
detail?: string;
|
|
42
54
|
}
|
|
43
55
|
export interface PlayerCallbacks {
|
|
44
56
|
onFrameRender?: (frame: VideoFrame) => void;
|
|
45
57
|
onStateChange?: (state: Partial<PlayerState>) => void;
|
|
46
58
|
onError?: (error: Error) => void;
|
|
59
|
+
/** 第一帧已准备好可以渲染时触发 */
|
|
60
|
+
onReady?: () => void;
|
|
61
|
+
/** 倍速变化时触发 */
|
|
62
|
+
onPlaybackRateChange?: (rate: number) => void;
|
|
63
|
+
/** 加载阶段变化时触发 */
|
|
64
|
+
onLoadingStageChange?: (info: LoadingStageInfo) => void;
|
|
47
65
|
}
|
|
48
66
|
export interface WASMModule {
|
|
49
67
|
_create_decoder(codecId: number): number;
|
|
68
|
+
_destroy_decoder?(ctx: number): void;
|
|
50
69
|
_decode_video(ctx: number, data: number, size: number): number;
|
|
51
70
|
_set_extradata(ctx: number, data: number, size: number): number;
|
|
52
71
|
_get_frame_data(ctx: number, plane: number): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|