libbitsub 1.10.2 → 1.11.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/README.md +184 -34
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/hlsjs.d.ts +45 -0
- package/dist/integrations/hlsjs.d.ts.map +1 -0
- package/dist/integrations/hlsjs.js +121 -0
- package/dist/integrations/hlsjs.js.map +1 -0
- package/dist/integrations/index.d.ts +11 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +11 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/react.d.ts +55 -0
- package/dist/integrations/react.d.ts.map +1 -0
- package/dist/integrations/react.js +127 -0
- package/dist/integrations/react.js.map +1 -0
- package/dist/integrations/shaka.d.ts +38 -0
- package/dist/integrations/shaka.d.ts.map +1 -0
- package/dist/integrations/shaka.js +71 -0
- package/dist/integrations/shaka.js.map +1 -0
- package/dist/integrations/shared.d.ts +41 -0
- package/dist/integrations/shared.d.ts.map +1 -0
- package/dist/integrations/shared.js +123 -0
- package/dist/integrations/shared.js.map +1 -0
- package/dist/integrations/videojs.d.ts +85 -0
- package/dist/integrations/videojs.d.ts.map +1 -0
- package/dist/integrations/videojs.js +111 -0
- package/dist/integrations/videojs.js.map +1 -0
- package/dist/ts/diagnostics.d.ts.map +1 -1
- package/dist/ts/diagnostics.js.map +1 -1
- package/dist/ts/frame-export.d.ts.map +1 -1
- package/dist/ts/frame-export.js +4 -4
- package/dist/ts/frame-export.js.map +1 -1
- package/dist/ts/parsers.d.ts +7 -6
- package/dist/ts/parsers.d.ts.map +1 -1
- package/dist/ts/parsers.js +76 -13
- package/dist/ts/parsers.js.map +1 -1
- package/dist/ts/range-loader.d.ts +31 -0
- package/dist/ts/range-loader.d.ts.map +1 -0
- package/dist/ts/range-loader.js +220 -0
- package/dist/ts/range-loader.js.map +1 -0
- package/dist/ts/renderers.d.ts +14 -0
- package/dist/ts/renderers.d.ts.map +1 -1
- package/dist/ts/renderers.js +445 -162
- package/dist/ts/renderers.js.map +1 -1
- package/dist/ts/types.d.ts +51 -1
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/utils.d.ts.map +1 -1
- package/dist/ts/utils.js.map +1 -1
- package/dist/ts/wasm.d.ts +2 -0
- package/dist/ts/wasm.d.ts.map +1 -1
- package/dist/ts/wasm.js +12 -0
- package/dist/ts/wasm.js.map +1 -1
- package/dist/ts/webgl2-renderer.d.ts +9 -0
- package/dist/ts/webgl2-renderer.d.ts.map +1 -1
- package/dist/ts/webgl2-renderer.js +34 -0
- package/dist/ts/webgl2-renderer.js.map +1 -1
- package/dist/ts/webgpu-renderer.d.ts +9 -0
- package/dist/ts/webgpu-renderer.d.ts.map +1 -1
- package/dist/ts/webgpu-renderer.js +70 -2
- package/dist/ts/webgpu-renderer.js.map +1 -1
- package/dist/ts/worker.d.ts +11 -0
- package/dist/ts/worker.d.ts.map +1 -1
- package/dist/ts/worker.js +229 -161
- package/dist/ts/worker.js.map +1 -1
- package/dist/wrapper.d.ts +3 -1
- package/dist/wrapper.d.ts.map +1 -1
- package/dist/wrapper.js +2 -0
- package/dist/wrapper.js.map +1 -1
- package/examples/README.md +38 -0
- package/examples/hlsjs/README.md +53 -0
- package/examples/react/README.md +60 -0
- package/examples/shaka/README.md +61 -0
- package/examples/videojs/README.md +55 -0
- package/package.json +64 -7
- package/pkg/README.md +184 -34
- package/pkg/libbitsub.d.ts +14 -0
- package/pkg/libbitsub.js +50 -0
- package/pkg/libbitsub_bg.wasm +0 -0
- package/pkg/libbitsub_bg.wasm.d.ts +7 -0
- package/pkg/package.json +1 -1
- package/src/integrations/hlsjs.ts +154 -0
- package/src/integrations/index.ts +36 -0
- package/src/integrations/react.tsx +170 -0
- package/src/integrations/shaka.ts +92 -0
- package/src/integrations/shared.ts +170 -0
- package/src/integrations/videojs.ts +200 -0
- package/src/wrapper.ts +12 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
const DEFAULT_RANGE_CHUNK_THRESHOLD = 2 * 1024 * 1024;
|
|
2
|
+
const DEFAULT_RANGE_CHUNK_SIZE = 512 * 1024;
|
|
3
|
+
function emitProgress(onProgress, loaded, total, rangeSupported, strategy) {
|
|
4
|
+
if (!onProgress)
|
|
5
|
+
return;
|
|
6
|
+
onProgress({
|
|
7
|
+
loaded,
|
|
8
|
+
total,
|
|
9
|
+
ratio: total && total > 0 ? Math.min(1, loaded / total) : null,
|
|
10
|
+
rangeSupported,
|
|
11
|
+
strategy
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function parseContentLength(header) {
|
|
15
|
+
if (!header)
|
|
16
|
+
return null;
|
|
17
|
+
const value = Number(header);
|
|
18
|
+
return Number.isFinite(value) && value >= 0 ? value : null;
|
|
19
|
+
}
|
|
20
|
+
function parseContentRangeTotal(header) {
|
|
21
|
+
if (!header)
|
|
22
|
+
return null;
|
|
23
|
+
const match = /bytes\s+(?:\d+-\d+|\*)\/(\d+|\*)/i.exec(header);
|
|
24
|
+
if (!match)
|
|
25
|
+
return null;
|
|
26
|
+
if (match[1] === '*')
|
|
27
|
+
return null;
|
|
28
|
+
return parseContentLength(match[1]);
|
|
29
|
+
}
|
|
30
|
+
function mergeHeaders(base, extra) {
|
|
31
|
+
const headers = new Headers(base);
|
|
32
|
+
if (extra) {
|
|
33
|
+
const more = new Headers(extra);
|
|
34
|
+
more.forEach((value, key) => headers.set(key, value));
|
|
35
|
+
}
|
|
36
|
+
return headers;
|
|
37
|
+
}
|
|
38
|
+
export async function probeRangeSupport(url, options = {}) {
|
|
39
|
+
const headers = mergeHeaders(options.headers, { Range: 'bytes=0-0' });
|
|
40
|
+
try {
|
|
41
|
+
const response = await fetch(url, {
|
|
42
|
+
method: 'GET',
|
|
43
|
+
headers,
|
|
44
|
+
signal: options.signal
|
|
45
|
+
});
|
|
46
|
+
if (response.status === 206) {
|
|
47
|
+
const size = parseContentRangeTotal(response.headers.get('content-range')) ??
|
|
48
|
+
parseContentLength(response.headers.get('content-length'));
|
|
49
|
+
try {
|
|
50
|
+
await response.body?.cancel();
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
/* ignore */
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
supportsRange: true,
|
|
57
|
+
size,
|
|
58
|
+
acceptRanges: response.headers.get('accept-ranges')
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
if (response.ok) {
|
|
62
|
+
const accept = response.headers.get('accept-ranges');
|
|
63
|
+
const size = parseContentLength(response.headers.get('content-length'));
|
|
64
|
+
try {
|
|
65
|
+
await response.body?.cancel();
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
/* ignore */
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
supportsRange: Boolean(accept && accept.toLowerCase() !== 'none'),
|
|
72
|
+
size,
|
|
73
|
+
acceptRanges: accept
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
/* try HEAD */
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const head = await fetch(url, {
|
|
82
|
+
method: 'HEAD',
|
|
83
|
+
headers: mergeHeaders(options.headers),
|
|
84
|
+
signal: options.signal
|
|
85
|
+
});
|
|
86
|
+
if (!head.ok) {
|
|
87
|
+
return { supportsRange: false, size: null, acceptRanges: null };
|
|
88
|
+
}
|
|
89
|
+
const accept = head.headers.get('accept-ranges');
|
|
90
|
+
return {
|
|
91
|
+
supportsRange: Boolean(accept && accept.toLowerCase() !== 'none'),
|
|
92
|
+
size: parseContentLength(head.headers.get('content-length')),
|
|
93
|
+
acceptRanges: accept
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return { supportsRange: false, size: null, acceptRanges: null };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function readResponseStream(response, totalHint, rangeSupported, strategy, onProgress, onChunk) {
|
|
101
|
+
const total = totalHint ?? parseContentLength(response.headers.get('content-length'));
|
|
102
|
+
if (!response.body || typeof response.body.getReader !== 'function') {
|
|
103
|
+
const buffer = new Uint8Array(await response.arrayBuffer());
|
|
104
|
+
const progress = {
|
|
105
|
+
loaded: buffer.byteLength,
|
|
106
|
+
total: total ?? buffer.byteLength,
|
|
107
|
+
ratio: 1,
|
|
108
|
+
rangeSupported,
|
|
109
|
+
strategy: strategy === 'stream' ? 'basic' : strategy
|
|
110
|
+
};
|
|
111
|
+
await onChunk?.(buffer, progress);
|
|
112
|
+
onProgress?.(progress);
|
|
113
|
+
return buffer;
|
|
114
|
+
}
|
|
115
|
+
const reader = response.body.getReader();
|
|
116
|
+
const chunks = [];
|
|
117
|
+
let loaded = 0;
|
|
118
|
+
while (true) {
|
|
119
|
+
const { done, value } = await reader.read();
|
|
120
|
+
if (done)
|
|
121
|
+
break;
|
|
122
|
+
if (!value || value.byteLength === 0)
|
|
123
|
+
continue;
|
|
124
|
+
const chunk = value instanceof Uint8Array ? value : new Uint8Array(value);
|
|
125
|
+
chunks.push(chunk);
|
|
126
|
+
loaded += chunk.byteLength;
|
|
127
|
+
const progress = {
|
|
128
|
+
loaded,
|
|
129
|
+
total,
|
|
130
|
+
ratio: total && total > 0 ? Math.min(1, loaded / total) : null,
|
|
131
|
+
rangeSupported,
|
|
132
|
+
strategy
|
|
133
|
+
};
|
|
134
|
+
await onChunk?.(chunk, progress);
|
|
135
|
+
onProgress?.(progress);
|
|
136
|
+
}
|
|
137
|
+
const assembled = new Uint8Array(loaded);
|
|
138
|
+
let offset = 0;
|
|
139
|
+
for (const chunk of chunks) {
|
|
140
|
+
assembled.set(chunk, offset);
|
|
141
|
+
offset += chunk.byteLength;
|
|
142
|
+
}
|
|
143
|
+
emitProgress(onProgress, assembled.byteLength, total ?? assembled.byteLength, rangeSupported, strategy);
|
|
144
|
+
return assembled;
|
|
145
|
+
}
|
|
146
|
+
async function fetchByRangeChunks(url, size, options, onChunk) {
|
|
147
|
+
const chunkSize = Math.max(1, Math.floor(options.rangeChunkSize ?? DEFAULT_RANGE_CHUNK_SIZE));
|
|
148
|
+
const assembled = new Uint8Array(size);
|
|
149
|
+
let loaded = 0;
|
|
150
|
+
for (let start = 0; start < size; start += chunkSize) {
|
|
151
|
+
const end = Math.min(size - 1, start + chunkSize - 1);
|
|
152
|
+
const response = await fetch(url, {
|
|
153
|
+
method: 'GET',
|
|
154
|
+
headers: mergeHeaders(options.headers, { Range: `bytes=${start}-${end}` }),
|
|
155
|
+
signal: options.signal
|
|
156
|
+
});
|
|
157
|
+
if (response.status !== 206 && !(response.ok && start === 0 && end >= size - 1)) {
|
|
158
|
+
throw new Error(`Failed to fetch subtitle range ${start}-${end}: ${response.status}`);
|
|
159
|
+
}
|
|
160
|
+
const buffer = new Uint8Array(await response.arrayBuffer());
|
|
161
|
+
if (buffer.byteLength === 0) {
|
|
162
|
+
throw new Error(`Empty subtitle range response for bytes=${start}-${end}`);
|
|
163
|
+
}
|
|
164
|
+
if (start + buffer.byteLength > size) {
|
|
165
|
+
assembled.set(buffer.subarray(0, size - start), start);
|
|
166
|
+
loaded = size;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
assembled.set(buffer, start);
|
|
170
|
+
loaded = start + buffer.byteLength;
|
|
171
|
+
}
|
|
172
|
+
const slice = assembled.subarray(start, loaded);
|
|
173
|
+
const progress = {
|
|
174
|
+
loaded,
|
|
175
|
+
total: size,
|
|
176
|
+
ratio: size > 0 ? Math.min(1, loaded / size) : null,
|
|
177
|
+
rangeSupported: true,
|
|
178
|
+
strategy: 'range-chunks'
|
|
179
|
+
};
|
|
180
|
+
await onChunk?.(slice, progress);
|
|
181
|
+
options.onProgress?.(progress);
|
|
182
|
+
}
|
|
183
|
+
return assembled;
|
|
184
|
+
}
|
|
185
|
+
export async function fetchSubtitleAsset(url, options = {}, onChunk) {
|
|
186
|
+
const preferRange = options.preferRange !== false;
|
|
187
|
+
const threshold = options.rangeChunkThreshold ?? DEFAULT_RANGE_CHUNK_THRESHOLD;
|
|
188
|
+
let rangeSupported = false;
|
|
189
|
+
let knownSize = null;
|
|
190
|
+
if (preferRange) {
|
|
191
|
+
const probe = await probeRangeSupport(url, options);
|
|
192
|
+
rangeSupported = probe.supportsRange;
|
|
193
|
+
knownSize = probe.size;
|
|
194
|
+
if (rangeSupported && knownSize != null && knownSize >= threshold) {
|
|
195
|
+
const data = await fetchByRangeChunks(url, knownSize, options, onChunk);
|
|
196
|
+
return { data, strategy: 'range-chunks', rangeSupported: true, total: knownSize };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const response = await fetch(url, {
|
|
200
|
+
method: 'GET',
|
|
201
|
+
headers: mergeHeaders(options.headers),
|
|
202
|
+
signal: options.signal
|
|
203
|
+
});
|
|
204
|
+
if (!response.ok) {
|
|
205
|
+
throw new Error(`Failed to fetch subtitle: ${response.status}`);
|
|
206
|
+
}
|
|
207
|
+
const total = knownSize ?? parseContentLength(response.headers.get('content-length'));
|
|
208
|
+
const strategy = response.body ? 'stream' : 'basic';
|
|
209
|
+
const data = await readResponseStream(response, total, rangeSupported, strategy, options.onProgress, onChunk);
|
|
210
|
+
return { data, strategy, rangeSupported, total: total ?? data.byteLength };
|
|
211
|
+
}
|
|
212
|
+
export async function fetchSubtitleText(url, options = {}) {
|
|
213
|
+
const { data } = await fetchSubtitleAsset(url, {
|
|
214
|
+
...options,
|
|
215
|
+
rangeChunkThreshold: Number.POSITIVE_INFINITY,
|
|
216
|
+
preferRange: false
|
|
217
|
+
});
|
|
218
|
+
return new TextDecoder('utf-8').decode(data);
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=range-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-loader.js","sourceRoot":"","sources":["../../src/ts/range-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/ts/renderers.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Handles canvas overlay, video sync, and subtitle fetching.
|
|
4
4
|
*/
|
|
5
5
|
import type { AutoVideoSubtitleOptions, SubtitleCacheStats, SubtitleCueMetadata, SubtitleData, SubtitleDiagnosticWarning, SubtitleDisplaySettings, SubtitleLastRenderInfo, SubtitleParserMetadata, SubtitleRendererBackend, SubtitleRendererEvent, VideoSubtitleOptions, VideoVobSubOptions, WorkerRendererState } from './types';
|
|
6
|
+
import { type AssetFetchProgress } from './range-loader';
|
|
6
7
|
import { WebGPURenderer } from './webgpu-renderer';
|
|
7
8
|
import { WebGL2Renderer } from './webgl2-renderer';
|
|
8
9
|
interface SubtitleRenderLayout {
|
|
@@ -74,6 +75,8 @@ declare abstract class BaseVideoSubtitleRenderer {
|
|
|
74
75
|
protected cacheLimit: number;
|
|
75
76
|
protected prefetchBefore: number;
|
|
76
77
|
protected prefetchAfter: number;
|
|
78
|
+
protected streamingLoad: boolean;
|
|
79
|
+
protected rangeRequests: boolean;
|
|
77
80
|
protected onEvent?: (event: SubtitleRendererEvent) => void;
|
|
78
81
|
protected onWarning?: (warning: SubtitleDiagnosticWarning) => void;
|
|
79
82
|
protected currentRendererBackend: SubtitleRendererBackend | null;
|
|
@@ -96,6 +99,9 @@ declare abstract class BaseVideoSubtitleRenderer {
|
|
|
96
99
|
lastFrameTime: number;
|
|
97
100
|
};
|
|
98
101
|
constructor(options: VideoSubtitleOptions, format: 'pgs' | 'vobsub');
|
|
102
|
+
protected emitLoadProgress(format: 'pgs' | 'vobsub', progress: AssetFetchProgress, indexedCues: number): void;
|
|
103
|
+
protected emitIndexed(format: 'pgs' | 'vobsub', metadata: SubtitleParserMetadata, partial: boolean): void;
|
|
104
|
+
protected memoryProgress(byteLength: number): AssetFetchProgress;
|
|
99
105
|
/** Get current display settings */
|
|
100
106
|
getDisplaySettings(): SubtitleDisplaySettings;
|
|
101
107
|
/** Get performance statistics */
|
|
@@ -183,6 +189,9 @@ export declare class PgsRenderer extends BaseVideoSubtitleRenderer {
|
|
|
183
189
|
private onError?;
|
|
184
190
|
constructor(options: VideoSubtitleOptions);
|
|
185
191
|
protected loadSubtitles(): Promise<void>;
|
|
192
|
+
private applyPgsIndexState;
|
|
193
|
+
private loadPgsBuffer;
|
|
194
|
+
private loadPgsStreaming;
|
|
186
195
|
private loadOnMainThread;
|
|
187
196
|
protected getWorkerRendererState(): WorkerRendererState;
|
|
188
197
|
/** Yield to main thread to prevent UI blocking */
|
|
@@ -219,6 +228,11 @@ export declare class VobSubRenderer extends BaseVideoSubtitleRenderer {
|
|
|
219
228
|
private pendingIndexLookup;
|
|
220
229
|
constructor(options: VideoVobSubOptions);
|
|
221
230
|
protected loadSubtitles(): Promise<void>;
|
|
231
|
+
private applyVobSubIndexState;
|
|
232
|
+
private ensureVobSubWorkerSession;
|
|
233
|
+
private loadVobSubBuffer;
|
|
234
|
+
private loadVobSubMksStreaming;
|
|
235
|
+
private loadVobSubIdxSubStreaming;
|
|
222
236
|
private loadOnMainThread;
|
|
223
237
|
protected getWorkerRendererState(): WorkerRendererState;
|
|
224
238
|
/** Yield to main thread to prevent UI blocking */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
|