@give-tech/ec-player 0.0.1-beta.0
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 +14 -0
- package/dist/decoder/H264Decoder.d.ts.map +1 -0
- package/dist/decoder/HEVCDecoder.d.ts +21 -0
- package/dist/decoder/HEVCDecoder.d.ts.map +1 -0
- package/dist/decoder/WASMLoader.d.ts +10 -0
- package/dist/decoder/WASMLoader.d.ts.map +1 -0
- package/dist/decoder/index.d.ts +4 -0
- package/dist/decoder/index.d.ts.map +1 -0
- package/dist/demuxer/DemuxerFactory.d.ts +24 -0
- package/dist/demuxer/DemuxerFactory.d.ts.map +1 -0
- package/dist/demuxer/FLVDemuxer.d.ts +132 -0
- package/dist/demuxer/FLVDemuxer.d.ts.map +1 -0
- package/dist/demuxer/FormatDetector.d.ts +21 -0
- package/dist/demuxer/FormatDetector.d.ts.map +1 -0
- package/dist/demuxer/PESExtractor.d.ts +11 -0
- package/dist/demuxer/PESExtractor.d.ts.map +1 -0
- package/dist/demuxer/TSDemuxer.d.ts +17 -0
- package/dist/demuxer/TSDemuxer.d.ts.map +1 -0
- package/dist/demuxer/fMP4Demuxer.d.ts +131 -0
- package/dist/demuxer/fMP4Demuxer.d.ts.map +1 -0
- package/dist/demuxer/index.d.ts +7 -0
- package/dist/demuxer/index.d.ts.map +1 -0
- package/dist/env/EnvDetector.d.ts +167 -0
- package/dist/env/EnvDetector.d.ts.map +1 -0
- package/dist/env/index.d.ts +5 -0
- package/dist/env/index.d.ts.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3869 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/NALParser.d.ts +21 -0
- package/dist/parser/NALParser.d.ts.map +1 -0
- package/dist/parser/index.d.ts +2 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/player/BasePlayer.d.ts +118 -0
- package/dist/player/BasePlayer.d.ts.map +1 -0
- package/dist/player/EcPlayerCore.d.ts +77 -0
- package/dist/player/EcPlayerCore.d.ts.map +1 -0
- package/dist/player/FLVPlayer.d.ts +134 -0
- package/dist/player/FLVPlayer.d.ts.map +1 -0
- package/dist/player/HLSPlayer.d.ts +99 -0
- package/dist/player/HLSPlayer.d.ts.map +1 -0
- package/dist/player/index.d.ts +3 -0
- package/dist/player/index.d.ts.map +1 -0
- package/dist/prefetch/BasePrefetcher.d.ts +99 -0
- package/dist/prefetch/BasePrefetcher.d.ts.map +1 -0
- package/dist/prefetch/SegmentPrefetcher.d.ts +116 -0
- package/dist/prefetch/SegmentPrefetcher.d.ts.map +1 -0
- package/dist/prefetch/StreamPrefetcher.d.ts +113 -0
- package/dist/prefetch/StreamPrefetcher.d.ts.map +1 -0
- package/dist/prefetch/index.d.ts +13 -0
- package/dist/prefetch/index.d.ts.map +1 -0
- package/dist/prefetch/types.d.ts +93 -0
- package/dist/prefetch/types.d.ts.map +1 -0
- package/dist/renderer/Canvas2DRenderer.d.ts +16 -0
- package/dist/renderer/Canvas2DRenderer.d.ts.map +1 -0
- package/dist/renderer/index.d.ts +2 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +117 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +36 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/package.json +48 -0
- package/wasm/decoder-simd.js +19 -0
- package/wasm/decoder-simd.wasm +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 分片预取器(用于 HLS)
|
|
3
|
+
*
|
|
4
|
+
* 管理分片下载队列,支持 TS 和 fMP4 格式
|
|
5
|
+
*/
|
|
6
|
+
import { BasePrefetcher } from './BasePrefetcher';
|
|
7
|
+
import type { SegmentPrefetcherConfig, PrefetcherStatus, PrefetcherCallbacks, PrefetchQueueItem } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* 分片信息
|
|
10
|
+
*/
|
|
11
|
+
export interface SegmentInfo {
|
|
12
|
+
/** 分片 URI */
|
|
13
|
+
uri: string;
|
|
14
|
+
/** 分片时长(秒) */
|
|
15
|
+
duration: number;
|
|
16
|
+
/** 字节范围(可选,用于 fMP4) */
|
|
17
|
+
byteRange?: {
|
|
18
|
+
start: number;
|
|
19
|
+
end: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 分片预取器状态
|
|
24
|
+
*/
|
|
25
|
+
export interface SegmentPrefetcherStatus extends PrefetcherStatus {
|
|
26
|
+
/** 当前分片索引 */
|
|
27
|
+
currentSegmentIndex: number;
|
|
28
|
+
/** 总分片数 */
|
|
29
|
+
totalSegments: number;
|
|
30
|
+
/** 预取队列大小 */
|
|
31
|
+
prefetchQueueSize: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 分片预取器回调
|
|
35
|
+
*/
|
|
36
|
+
export interface SegmentPrefetcherCallbacks extends PrefetcherCallbacks {
|
|
37
|
+
/** 分片下载完成回调 */
|
|
38
|
+
onSegmentFetched?: (segmentIndex: number, data: Uint8Array) => void;
|
|
39
|
+
/** 分片解析完成回调 */
|
|
40
|
+
onSegmentParsed?: (segmentIndex: number, itemCount: number) => void;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 分片预取器
|
|
44
|
+
*
|
|
45
|
+
* 用于 HLS 流的分片预取,支持:
|
|
46
|
+
* - TS 分片
|
|
47
|
+
* - fMP4 分片(支持字节范围)
|
|
48
|
+
*/
|
|
49
|
+
export declare abstract class SegmentPrefetcher extends BasePrefetcher<SegmentPrefetcherConfig, SegmentPrefetcherStatus> {
|
|
50
|
+
/** 预取队列:存储已下载但尚未解析的分片 */
|
|
51
|
+
protected prefetchQueue: PrefetchQueueItem[];
|
|
52
|
+
/** 分片列表 */
|
|
53
|
+
protected segments: SegmentInfo[];
|
|
54
|
+
/** 当前分片索引 */
|
|
55
|
+
protected currentSegmentIndex: number;
|
|
56
|
+
/** 基础 URL(用于解析相对路径) */
|
|
57
|
+
protected baseUrl: string;
|
|
58
|
+
/** 正在预取标志 */
|
|
59
|
+
protected isPrefetchingSegment: boolean;
|
|
60
|
+
constructor(config: SegmentPrefetcherConfig, callbacks?: SegmentPrefetcherCallbacks);
|
|
61
|
+
/**
|
|
62
|
+
* 创建初始状态
|
|
63
|
+
*/
|
|
64
|
+
protected createInitialState(): SegmentPrefetcherStatus;
|
|
65
|
+
/**
|
|
66
|
+
* 设置分片列表
|
|
67
|
+
*/
|
|
68
|
+
setSegments(segments: SegmentInfo[], baseUrl: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* 设置当前分片索引(用于 seek)
|
|
71
|
+
*/
|
|
72
|
+
setCurrentSegmentIndex(index: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* 获取当前队列大小(返回预取队列大小)
|
|
75
|
+
*/
|
|
76
|
+
getQueueSize(): number;
|
|
77
|
+
/**
|
|
78
|
+
* 判断是否应该预取
|
|
79
|
+
*/
|
|
80
|
+
shouldPrefetch(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* 执行预取
|
|
83
|
+
*/
|
|
84
|
+
doPrefetch(): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* 处理预取队列中的数据
|
|
87
|
+
*
|
|
88
|
+
* @returns 是否有数据被处理
|
|
89
|
+
*/
|
|
90
|
+
processQueue(): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* 重置状态
|
|
93
|
+
*/
|
|
94
|
+
doReset(): void;
|
|
95
|
+
/**
|
|
96
|
+
* 获取当前分片索引
|
|
97
|
+
*/
|
|
98
|
+
getCurrentSegmentIndex(): number;
|
|
99
|
+
/**
|
|
100
|
+
* 获取总分片数
|
|
101
|
+
*/
|
|
102
|
+
getTotalSegments(): number;
|
|
103
|
+
/**
|
|
104
|
+
* 获取分片数据(子类实现具体下载逻辑)
|
|
105
|
+
*/
|
|
106
|
+
abstract fetchSegment(segment: SegmentInfo, index: number): Promise<Uint8Array>;
|
|
107
|
+
/**
|
|
108
|
+
* 解析分片数据(子类实现具体解析逻辑)
|
|
109
|
+
*
|
|
110
|
+
* @param data 分片数据
|
|
111
|
+
* @param index 分片索引
|
|
112
|
+
* @returns 解析出的项目数量
|
|
113
|
+
*/
|
|
114
|
+
abstract parseSegment(data: Uint8Array, index: number): number;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=SegmentPrefetcher.d.ts.map
|
|
@@ -0,0 +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,EAElB,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;CACF;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,aAAa;IACb,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa;IACb,iBAAiB,EAAE,MAAM,CAAA;CAC1B;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;CACpE;AAED;;;;;;GAMG;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,uBAAuB;IACvB,SAAS,CAAC,OAAO,SAAK;IAEtB,aAAa;IACb,SAAS,CAAC,oBAAoB,UAAQ;gBAGpC,MAAM,EAAE,uBAAuB,EAC/B,SAAS,GAAE,0BAA+B;IAK5C;;OAEG;cACgB,kBAAkB,IAAI,uBAAuB;IAShE;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAa3D;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAW3C;;OAEG;IACM,YAAY,IAAI,MAAM;IAI/B;;OAEG;IACM,cAAc,IAAI,OAAO;IAgBlC;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C1C;;;;OAIG;IACH,YAAY,IAAI,OAAO;IAoCvB;;OAEG;IACM,OAAO,IAAI,IAAI;IAQxB;;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;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAC/D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 流式预取器(用于 FLV)
|
|
3
|
+
*
|
|
4
|
+
* 管理 ReadableStream 下载,支持动态扩容缓冲区
|
|
5
|
+
*/
|
|
6
|
+
import { BasePrefetcher } from './BasePrefetcher';
|
|
7
|
+
import type { StreamPrefetcherConfig, PrefetcherStatus, PrefetcherCallbacks, DownloadBufferInfo } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* 流式预取器状态
|
|
10
|
+
*/
|
|
11
|
+
export interface StreamPrefetcherStatus extends PrefetcherStatus {
|
|
12
|
+
/** 缓冲区使用量 */
|
|
13
|
+
bufferLength: number;
|
|
14
|
+
/** 缓冲区容量 */
|
|
15
|
+
bufferCapacity: number;
|
|
16
|
+
/** 是否已完成下载 */
|
|
17
|
+
downloadComplete: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 流式预取器回调
|
|
21
|
+
*/
|
|
22
|
+
export interface StreamPrefetcherCallbacks extends PrefetcherCallbacks {
|
|
23
|
+
/** 数据到达回调 */
|
|
24
|
+
onDataReceived?: (totalBytes: number) => void;
|
|
25
|
+
/** 缓冲区处理回调 */
|
|
26
|
+
onBufferProcessed?: (processedBytes: number) => void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 流式预取器
|
|
30
|
+
*
|
|
31
|
+
* 用于 FLV 流的流式预取,支持:
|
|
32
|
+
* - 动态扩容缓冲区
|
|
33
|
+
* - ReadableStream 读取
|
|
34
|
+
* - 增量解析
|
|
35
|
+
*/
|
|
36
|
+
export declare abstract class StreamPrefetcher extends BasePrefetcher<StreamPrefetcherConfig, StreamPrefetcherStatus> {
|
|
37
|
+
/** 下载缓冲区 */
|
|
38
|
+
protected downloadBuffer: Uint8Array | null;
|
|
39
|
+
/** 已使用的缓冲区长度 */
|
|
40
|
+
protected bufferLength: number;
|
|
41
|
+
/** 流读取器 */
|
|
42
|
+
protected reader: ReadableStreamDefaultReader<Uint8Array> | null;
|
|
43
|
+
/** 下载完成标志 */
|
|
44
|
+
protected downloadComplete: boolean;
|
|
45
|
+
/** 下载 Promise */
|
|
46
|
+
protected downloadPromise: Promise<void> | null;
|
|
47
|
+
/** 总下载字节数 */
|
|
48
|
+
protected totalDownloadedBytes: number;
|
|
49
|
+
constructor(config: StreamPrefetcherConfig, callbacks?: StreamPrefetcherCallbacks);
|
|
50
|
+
/**
|
|
51
|
+
* 创建初始状态
|
|
52
|
+
*/
|
|
53
|
+
protected createInitialState(): StreamPrefetcherStatus;
|
|
54
|
+
/**
|
|
55
|
+
* 设置流读取器
|
|
56
|
+
*/
|
|
57
|
+
setReader(reader: ReadableStreamDefaultReader<Uint8Array>, initialData?: Uint8Array): void;
|
|
58
|
+
/**
|
|
59
|
+
* 确保缓冲区有足够的容量
|
|
60
|
+
*/
|
|
61
|
+
protected ensureCapacity(needed: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* 获取当前队列大小(使用缓冲区长度)
|
|
64
|
+
*/
|
|
65
|
+
getQueueSize(): number;
|
|
66
|
+
/**
|
|
67
|
+
* 判断是否应该预取
|
|
68
|
+
*/
|
|
69
|
+
shouldPrefetch(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* 执行预取(从流读取数据)
|
|
72
|
+
*/
|
|
73
|
+
doPrefetch(): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* 处理缓冲区数据
|
|
76
|
+
*
|
|
77
|
+
* @returns 是否有数据被处理
|
|
78
|
+
*/
|
|
79
|
+
processBuffer(): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* 获取缓冲区信息
|
|
82
|
+
*/
|
|
83
|
+
getBufferInfo(): DownloadBufferInfo;
|
|
84
|
+
/**
|
|
85
|
+
* 获取缓冲区数据(复制)
|
|
86
|
+
*/
|
|
87
|
+
getBufferData(): Uint8Array | null;
|
|
88
|
+
/**
|
|
89
|
+
* 重置状态
|
|
90
|
+
*/
|
|
91
|
+
doReset(): void;
|
|
92
|
+
/**
|
|
93
|
+
* 取消下载
|
|
94
|
+
*/
|
|
95
|
+
cancelDownload(): void;
|
|
96
|
+
/**
|
|
97
|
+
* 是否下载完成
|
|
98
|
+
*/
|
|
99
|
+
isDownloadComplete(): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* 处理缓冲区数据(子类实现具体解析逻辑)
|
|
102
|
+
*
|
|
103
|
+
* @param data 当前缓冲区数据
|
|
104
|
+
* @returns 处理结果
|
|
105
|
+
*/
|
|
106
|
+
abstract processBufferData(data: Uint8Array): {
|
|
107
|
+
/** 是否有新数据 */
|
|
108
|
+
hasNewData: boolean;
|
|
109
|
+
/** 已处理的字节数 */
|
|
110
|
+
processedBytes: number;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=StreamPrefetcher.d.ts.map
|
|
@@ -0,0 +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;IA2C1C;;;;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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 预取器模块
|
|
3
|
+
*
|
|
4
|
+
* 提供通用的预取抽象层,支持分片预取(HLS)和流式预取(FLV)
|
|
5
|
+
*/
|
|
6
|
+
export { BasePrefetcher } from './BasePrefetcher';
|
|
7
|
+
export { SegmentPrefetcher } from './SegmentPrefetcher';
|
|
8
|
+
export type { SegmentInfo, SegmentPrefetcherStatus, SegmentPrefetcherCallbacks } from './SegmentPrefetcher';
|
|
9
|
+
export { StreamPrefetcher } from './StreamPrefetcher';
|
|
10
|
+
export type { StreamPrefetcherStatus, StreamPrefetcherCallbacks } from './StreamPrefetcher';
|
|
11
|
+
export type { PrefetcherConfig, PrefetcherStatus, PrefetcherCallbacks, SegmentPrefetcherConfig, StreamPrefetcherConfig, PrefetchQueueItem, DownloadBufferInfo } from './types';
|
|
12
|
+
export { DEFAULT_PREFETCHER_CONFIG, DEFAULT_SEGMENT_PREFETCHER_CONFIG, DEFAULT_STREAM_PREFETCHER_CONFIG } from './types';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 预取器类型定义
|
|
3
|
+
*
|
|
4
|
+
* 定义通用的预取器配置、状态和回调接口
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 预取器配置
|
|
8
|
+
*/
|
|
9
|
+
export interface PrefetcherConfig {
|
|
10
|
+
/** 低水位:队列低于此值开始预取 */
|
|
11
|
+
lowWaterMark: number;
|
|
12
|
+
/** 高水位:队列达到此值暂停预取 */
|
|
13
|
+
highWaterMark: number;
|
|
14
|
+
/** 预取间隔(毫秒) */
|
|
15
|
+
prefetchInterval: number;
|
|
16
|
+
/** 是否启用动态间隔调整 */
|
|
17
|
+
dynamicInterval: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 预取器状态
|
|
21
|
+
*/
|
|
22
|
+
export interface PrefetcherStatus {
|
|
23
|
+
/** 是否正在预取 */
|
|
24
|
+
isPrefetching: boolean;
|
|
25
|
+
/** 当前队列大小 */
|
|
26
|
+
queueSize: number;
|
|
27
|
+
/** 下载速度 (KB/s) */
|
|
28
|
+
downloadSpeed: number;
|
|
29
|
+
/** 已预取的总字节数 */
|
|
30
|
+
totalBytes: number;
|
|
31
|
+
/** 预取错误信息 */
|
|
32
|
+
lastError?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 预取器回调
|
|
36
|
+
*/
|
|
37
|
+
export interface PrefetcherCallbacks {
|
|
38
|
+
/** 状态变化回调 */
|
|
39
|
+
onStatusChange?: (status: PrefetcherStatus) => void;
|
|
40
|
+
/** 预取完成回调 */
|
|
41
|
+
onPrefetchComplete?: (bytesFetched: number) => void;
|
|
42
|
+
/** 错误回调 */
|
|
43
|
+
onError?: (error: Error) => void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 默认预取器配置
|
|
47
|
+
*/
|
|
48
|
+
export declare const DEFAULT_PREFETCHER_CONFIG: PrefetcherConfig;
|
|
49
|
+
/**
|
|
50
|
+
* 分片预取器配置(扩展基础配置)
|
|
51
|
+
*/
|
|
52
|
+
export interface SegmentPrefetcherConfig extends PrefetcherConfig {
|
|
53
|
+
/** 提前预取的分片数量 */
|
|
54
|
+
prefetchAhead: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 默认分片预取器配置
|
|
58
|
+
*/
|
|
59
|
+
export declare const DEFAULT_SEGMENT_PREFETCHER_CONFIG: SegmentPrefetcherConfig;
|
|
60
|
+
/**
|
|
61
|
+
* 流式预取器配置(扩展基础配置)
|
|
62
|
+
*/
|
|
63
|
+
export interface StreamPrefetcherConfig extends PrefetcherConfig {
|
|
64
|
+
/** 初始缓冲区大小 */
|
|
65
|
+
initialBufferSize: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 默认流式预取器配置
|
|
69
|
+
*/
|
|
70
|
+
export declare const DEFAULT_STREAM_PREFETCHER_CONFIG: StreamPrefetcherConfig;
|
|
71
|
+
/**
|
|
72
|
+
* 预取队列项(分片模式)
|
|
73
|
+
*/
|
|
74
|
+
export interface PrefetchQueueItem {
|
|
75
|
+
/** 分片数据 */
|
|
76
|
+
data: Uint8Array;
|
|
77
|
+
/** 分片索引 */
|
|
78
|
+
segmentIndex: number;
|
|
79
|
+
/** 获取时间 */
|
|
80
|
+
fetchTime: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 下载缓冲区信息(流式模式)
|
|
84
|
+
*/
|
|
85
|
+
export interface DownloadBufferInfo {
|
|
86
|
+
/** 缓冲区 */
|
|
87
|
+
buffer: Uint8Array | null;
|
|
88
|
+
/** 已使用长度 */
|
|
89
|
+
length: number;
|
|
90
|
+
/** 总容量 */
|
|
91
|
+
capacity: number;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,uBAG/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;CAClB;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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas 2D 渲染器
|
|
3
|
+
*/
|
|
4
|
+
import type { VideoFrame } from '../types';
|
|
5
|
+
export declare class Canvas2DRenderer {
|
|
6
|
+
private canvas;
|
|
7
|
+
private ctx;
|
|
8
|
+
private frameCount;
|
|
9
|
+
private lastFpsUpdate;
|
|
10
|
+
private lastFps;
|
|
11
|
+
constructor(canvas: HTMLCanvasElement);
|
|
12
|
+
render(frame: VideoFrame): void;
|
|
13
|
+
updateFps(): number;
|
|
14
|
+
getCanvas(): HTMLCanvasElement;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=Canvas2DRenderer.d.ts.map
|
|
@@ -0,0 +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;IAQrC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAY/B,SAAS,IAAI,MAAM;IAWnB,SAAS,IAAI,iBAAiB;CAG/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 核心类型定义
|
|
3
|
+
*/
|
|
4
|
+
export interface VideoFrame {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
data: Uint8Array;
|
|
8
|
+
}
|
|
9
|
+
export interface NALUnit {
|
|
10
|
+
type: number;
|
|
11
|
+
data: Uint8Array;
|
|
12
|
+
size: number;
|
|
13
|
+
}
|
|
14
|
+
export interface HLSPlayerConfig {
|
|
15
|
+
/** WASM 文件路径 */
|
|
16
|
+
wasmPath?: string;
|
|
17
|
+
/** 帧缓冲区目标大小 - 控制缓冲的最大帧数 */
|
|
18
|
+
targetBufferSize?: number;
|
|
19
|
+
/** 每批解码帧数 - 批量解码后再让出主线程 */
|
|
20
|
+
decodeBatchSize?: number;
|
|
21
|
+
/** NAL/Sample 队列上限 - 超过则暂停下载 */
|
|
22
|
+
maxQueueSize?: number;
|
|
23
|
+
/** 是否为直播流 - 直播流会持续下载数据 */
|
|
24
|
+
isLive?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface PlayerState {
|
|
27
|
+
isPlaying: boolean;
|
|
28
|
+
isLoaded: boolean;
|
|
29
|
+
isLoading: boolean;
|
|
30
|
+
fps: number;
|
|
31
|
+
resolution: string;
|
|
32
|
+
decoded: number;
|
|
33
|
+
downloaded: number;
|
|
34
|
+
droppedFrames: number;
|
|
35
|
+
isPrefetching: boolean;
|
|
36
|
+
segmentIndex: number;
|
|
37
|
+
totalSegments: number;
|
|
38
|
+
downloadSpeed: number;
|
|
39
|
+
currentTime: number;
|
|
40
|
+
duration: number;
|
|
41
|
+
}
|
|
42
|
+
export interface PlayerCallbacks {
|
|
43
|
+
onFrameRender?: (frame: VideoFrame) => void;
|
|
44
|
+
onStateChange?: (state: Partial<PlayerState>) => void;
|
|
45
|
+
onError?: (error: Error) => void;
|
|
46
|
+
}
|
|
47
|
+
export interface WASMModule {
|
|
48
|
+
_create_decoder(codecId: number): number;
|
|
49
|
+
_decode_video(ctx: number, data: number, size: number): number;
|
|
50
|
+
_set_extradata(ctx: number, data: number, size: number): number;
|
|
51
|
+
_get_frame_data(ctx: number, plane: number): number;
|
|
52
|
+
_get_frame_width(ctx: number): number;
|
|
53
|
+
_get_frame_height(ctx: number): number;
|
|
54
|
+
_get_frame_linesize(ctx: number, plane: number): number;
|
|
55
|
+
_malloc(size: number): number;
|
|
56
|
+
_free(ptr: number): void;
|
|
57
|
+
HEAPU8: Uint8Array;
|
|
58
|
+
}
|
|
59
|
+
export type DecoderContext = number;
|
|
60
|
+
export declare const NAL_TYPES: {
|
|
61
|
+
readonly SLICE: 1;
|
|
62
|
+
readonly IDR: 5;
|
|
63
|
+
readonly SEI: 6;
|
|
64
|
+
readonly SPS: 7;
|
|
65
|
+
readonly PPS: 8;
|
|
66
|
+
readonly AUD: 9;
|
|
67
|
+
};
|
|
68
|
+
export type NALType = typeof NAL_TYPES[keyof typeof NAL_TYPES];
|
|
69
|
+
export declare const FLV_TAG_TYPES: {
|
|
70
|
+
readonly AUDIO: 8;
|
|
71
|
+
readonly VIDEO: 9;
|
|
72
|
+
readonly SCRIPT_DATA: 18;
|
|
73
|
+
};
|
|
74
|
+
export declare const AVC_PACKET_TYPES: {
|
|
75
|
+
readonly SEQUENCE_HEADER: 0;
|
|
76
|
+
readonly NALU: 1;
|
|
77
|
+
readonly END_OF_SEQUENCE: 2;
|
|
78
|
+
};
|
|
79
|
+
export interface FLVVideoTag {
|
|
80
|
+
timestamp: number;
|
|
81
|
+
frameType: number;
|
|
82
|
+
codecId: number;
|
|
83
|
+
avcPacketType: number;
|
|
84
|
+
compositionTimeOffset: number;
|
|
85
|
+
data: Uint8Array;
|
|
86
|
+
}
|
|
87
|
+
export interface FLVAVCConfig {
|
|
88
|
+
configurationVersion: number;
|
|
89
|
+
avcProfileIndication: number;
|
|
90
|
+
profileCompatibility: number;
|
|
91
|
+
avcLevelIndication: number;
|
|
92
|
+
lengthSizeMinusOne: number;
|
|
93
|
+
spsList: Uint8Array[];
|
|
94
|
+
ppsList: Uint8Array[];
|
|
95
|
+
}
|
|
96
|
+
export interface FLVHEVCConfig {
|
|
97
|
+
configurationVersion: number;
|
|
98
|
+
general_profile_space: number;
|
|
99
|
+
general_tier_flag: number;
|
|
100
|
+
general_profile_idc: number;
|
|
101
|
+
general_profile_compatibility_flags: number;
|
|
102
|
+
general_constraint_indicator_flags: bigint;
|
|
103
|
+
general_level_idc: number;
|
|
104
|
+
lengthSizeMinusOne: number;
|
|
105
|
+
vpsList: Uint8Array[];
|
|
106
|
+
spsList: Uint8Array[];
|
|
107
|
+
ppsList: Uint8Array[];
|
|
108
|
+
}
|
|
109
|
+
export interface FLVParseResult {
|
|
110
|
+
videoTags: FLVVideoTag[];
|
|
111
|
+
avcConfig: FLVAVCConfig | null;
|
|
112
|
+
hevcConfig: FLVHEVCConfig | null;
|
|
113
|
+
duration: number;
|
|
114
|
+
}
|
|
115
|
+
export interface FLVPlayerConfig extends HLSPlayerConfig {
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 日志级别
|
|
3
|
+
*/
|
|
4
|
+
export declare enum LogLevel {
|
|
5
|
+
NONE = 0,
|
|
6
|
+
ERROR = 1,
|
|
7
|
+
WARN = 2,
|
|
8
|
+
INFO = 3,
|
|
9
|
+
DEBUG = 4
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 设置全局日志级别
|
|
13
|
+
*/
|
|
14
|
+
export declare function setLogLevel(level: LogLevel): void;
|
|
15
|
+
/**
|
|
16
|
+
* 获取当前日志级别
|
|
17
|
+
*/
|
|
18
|
+
export declare function getLogLevel(): LogLevel;
|
|
19
|
+
/**
|
|
20
|
+
* 创建带模块名的日志器
|
|
21
|
+
*/
|
|
22
|
+
export declare function createLogger(moduleName: string): {
|
|
23
|
+
error: (...args: any[]) => void;
|
|
24
|
+
warn: (...args: any[]) => void;
|
|
25
|
+
info: (...args: any[]) => void;
|
|
26
|
+
debug: (...args: any[]) => void;
|
|
27
|
+
log: (...args: any[]) => void;
|
|
28
|
+
};
|
|
29
|
+
export declare const logger: {
|
|
30
|
+
error: (...args: any[]) => void;
|
|
31
|
+
warn: (...args: any[]) => void;
|
|
32
|
+
info: (...args: any[]) => void;
|
|
33
|
+
debug: (...args: any[]) => void;
|
|
34
|
+
log: (...args: any[]) => void;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAaD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM;qBAI1B,GAAG,EAAE;oBAMN,GAAG,EAAE;oBAML,GAAG,EAAE;qBAMJ,GAAG,EAAE;mBAMP,GAAG,EAAE;EAOvB;AAGD,eAAO,MAAM,MAAM;qBAlCE,GAAG,EAAE;oBAMN,GAAG,EAAE;oBAML,GAAG,EAAE;qBAMJ,GAAG,EAAE;mBAMP,GAAG,EAAE;CAUsB,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@give-tech/ec-player",
|
|
3
|
+
"version": "0.0.1-beta.0",
|
|
4
|
+
"description": "EcPlayer Core - HLS/FLV Streaming Video Player with WASM Decoder",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./wasm/*": "./wasm/*"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"wasm"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "vite build && tsc --emitDeclarationOnly",
|
|
22
|
+
"dev": "vite build --watch",
|
|
23
|
+
"typecheck": "tsc --noEmit"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"typescript": "^5.9.3",
|
|
27
|
+
"vite": "^7.3.1"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"hls",
|
|
31
|
+
"flv",
|
|
32
|
+
"video",
|
|
33
|
+
"player",
|
|
34
|
+
"wasm",
|
|
35
|
+
"simd",
|
|
36
|
+
"streaming",
|
|
37
|
+
"h264",
|
|
38
|
+
"decoder"
|
|
39
|
+
],
|
|
40
|
+
"author": {
|
|
41
|
+
"name": "polarIsle",
|
|
42
|
+
"email": "givetech@126.com"
|
|
43
|
+
},
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
}
|
|
48
|
+
}
|