libbitsub 1.10.2 → 1.12.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 +296 -49
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- 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 +133 -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/capabilities.d.ts +8 -0
- package/dist/ts/capabilities.d.ts.map +1 -0
- package/dist/ts/capabilities.js +105 -0
- package/dist/ts/capabilities.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 +46 -8
- package/dist/ts/parsers.d.ts.map +1 -1
- package/dist/ts/parsers.js +305 -14
- 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 +140 -8
- package/dist/ts/renderers.d.ts.map +1 -1
- package/dist/ts/renderers.js +1773 -287
- package/dist/ts/renderers.js.map +1 -1
- package/dist/ts/types.d.ts +210 -7
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/utils.d.ts.map +1 -1
- package/dist/ts/utils.js +98 -2
- package/dist/ts/utils.js.map +1 -1
- package/dist/ts/video-frame-scheduler.d.ts +35 -0
- package/dist/ts/video-frame-scheduler.d.ts.map +1 -0
- package/dist/ts/video-frame-scheduler.js +98 -0
- package/dist/ts/video-frame-scheduler.js.map +1 -0
- 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 +620 -158
- package/dist/ts/worker.js.map +1 -1
- package/dist/wrapper.d.ts +6 -3
- package/dist/wrapper.d.ts.map +1 -1
- package/dist/wrapper.js +5 -2
- 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 +66 -8
- package/pkg/README.md +296 -49
- package/pkg/libbitsub.d.ts +65 -1
- package/pkg/libbitsub.js +228 -3
- package/pkg/libbitsub_bg.wasm +0 -0
- package/pkg/libbitsub_bg.wasm.d.ts +28 -0
- package/pkg/package.json +4 -4
- package/src/integrations/hlsjs.ts +154 -0
- package/src/integrations/index.ts +36 -0
- package/src/integrations/react.tsx +176 -0
- package/src/integrations/shaka.ts +92 -0
- package/src/integrations/shared.ts +171 -0
- package/src/integrations/videojs.ts +200 -0
- package/src/wrapper.ts +34 -2
package/dist/ts/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/ts/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/ts/worker.ts"],"names":[],"mappings":"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"}
|
package/dist/wrapper.d.ts
CHANGED
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
* TypeScript wrapper for the libbitsub Rust rendering engine.
|
|
3
3
|
* Provides a compatible API with the original libpgs-js implementation.
|
|
4
4
|
*/
|
|
5
|
-
export type { AutoSubtitleSource, AutoVideoSubtitleOptions, OpenedSubtitles, SubtitleAspectMode, SubtitleCacheStats, SubtitleFrameCanvasOptions, SubtitleFrameCanvasTarget, SubtitleFrameCropMode, SubtitleFrameRenderOptions, SubtitleRenderedFrameData, SubtitleCueBounds, SubtitleCueMetadata, SubtitleData, SubtitleDiagnosticDetailValue, SubtitleDiagnosticErrorCode, SubtitleDiagnosticErrorLike, SubtitleDiagnosticsOptions, SubtitleDiagnosticWarning, SubtitleDiagnosticWarningCode, SubtitleCompositionData, SubtitleDisplaySettings, SubtitleFormatName, SubtitleHorizontalAlign, SubtitleLastRenderInfo, SubtitleParserMetadata, SubtitleRendererBackend, SubtitleRendererEvent, SubtitleRendererStatsSnapshot, VideoSubtitleOptions, VideoVobSubOptions, RenderResult, SubtitleFrame, VobSubFrame } from './ts/types';
|
|
5
|
+
export type { AssetFetchStrategy, AutoSubtitleSource, AutoVideoSubtitleOptions, LiveSubtitleRenderer, OpenedSubtitles, SubtitleAspectMode, SubtitleCacheStats, SubtitleFrameCanvasOptions, SubtitleFrameCanvasTarget, SubtitleFrameCropMode, SubtitleFrameRenderOptions, SubtitleRenderedFrameData, SubtitleCueBounds, SubtitleCueMetadata, SubtitleData, SubtitleDiagnosticDetailValue, SubtitleDiagnosticErrorCode, SubtitleDiagnosticErrorLike, SubtitleDiagnosticsOptions, SubtitleDiagnosticWarning, SubtitleDiagnosticWarningCode, SubtitleCompositionData, SubtitleDisplaySettings, SubtitleFormatName, SubtitleHorizontalAlign, SubtitleLastRenderInfo, SubtitleParserMetadata, SubtitleRendererBackend, SubtitleRendererEvent, SubtitleRendererStatsSnapshot, SubtitleSynchronizationMode, SubtitleStreamChunk, RuntimeCapabilities, SubtitlePresentPath, VideoSubtitleOptions, VideoVobSubOptions, RenderResult, SubtitleFrame, VobSubFrame } from './ts/types';
|
|
6
6
|
export { SubtitleDiagnosticError, createSubtitleDiagnosticError, normalizeSubtitleError } from './ts/diagnostics';
|
|
7
7
|
export { initWasm, isWasmInitialized } from './ts/wasm';
|
|
8
|
+
export { warmup, ready, isWorkerAvailable, isWorkerReady } from './ts/worker';
|
|
8
9
|
export { isWebGPUSupported } from './ts/webgpu-renderer';
|
|
9
|
-
export {
|
|
10
|
+
export { getRuntimeCapabilities, canUseWorkerOffscreenRender, isOffscreenCanvasSupported, isOffscreenCanvas2DSupported, isTransferControlToOffscreenSupported, isCanvas2DSupported } from './ts/capabilities';
|
|
11
|
+
export { PgsParser, DvbParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
|
|
10
12
|
export { renderFrameData, toBlob, toCanvas, toImageBitmap } from './ts/frame-export';
|
|
11
|
-
export { PgsRenderer, VobSubRenderer, createAutoSubtitleRenderer, type SubtitleRendererStats } from './ts/renderers';
|
|
13
|
+
export { PgsRenderer, DvbRenderer, VobSubRenderer, createAutoSubtitleRenderer, type SubtitleRendererStats } from './ts/renderers';
|
|
12
14
|
export { detectSubtitleFormat } from './ts/utils';
|
|
15
|
+
export { fetchSubtitleAsset, fetchSubtitleText, probeRangeSupport, type AssetFetchOptions, type AssetFetchProgress, type RangeProbeResult } from './ts/range-loader';
|
|
13
16
|
import { PgsRenderer as _PgsRenderer, VobSubRenderer as _VobSubRenderer } from './ts/renderers';
|
|
14
17
|
import { UnifiedSubtitleParser as _UnifiedSubtitleParser } from './ts/parsers';
|
|
15
18
|
/** @deprecated Use PgsRenderer instead */
|
package/dist/wrapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAGjH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAGjH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,qCAAqC,EACrC,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG/G,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGpF,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,0BAA0B,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAA;AAM1B,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,eAAO,MAAM,WAAW,qBAAe,CAAA;AAEvC,6CAA6C;AAC7C,eAAO,MAAM,cAAc,wBAAkB,CAAA;AAE7C,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,+BAAyB,CAAA"}
|
package/dist/wrapper.js
CHANGED
|
@@ -5,16 +5,19 @@
|
|
|
5
5
|
export { SubtitleDiagnosticError, createSubtitleDiagnosticError, normalizeSubtitleError } from './ts/diagnostics';
|
|
6
6
|
// Re-export WASM management
|
|
7
7
|
export { initWasm, isWasmInitialized } from './ts/wasm';
|
|
8
|
+
export { warmup, ready, isWorkerAvailable, isWorkerReady } from './ts/worker';
|
|
8
9
|
// Re-export WebGPU utilities
|
|
9
10
|
export { isWebGPUSupported } from './ts/webgpu-renderer';
|
|
11
|
+
export { getRuntimeCapabilities, canUseWorkerOffscreenRender, isOffscreenCanvasSupported, isOffscreenCanvas2DSupported, isTransferControlToOffscreenSupported, isCanvas2DSupported } from './ts/capabilities';
|
|
10
12
|
// Re-export parsers
|
|
11
|
-
export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
|
|
13
|
+
export { PgsParser, DvbParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
|
|
12
14
|
// Re-export frame export helpers
|
|
13
15
|
export { renderFrameData, toBlob, toCanvas, toImageBitmap } from './ts/frame-export';
|
|
14
16
|
// Re-export renderers
|
|
15
|
-
export { PgsRenderer, VobSubRenderer, createAutoSubtitleRenderer } from './ts/renderers';
|
|
17
|
+
export { PgsRenderer, DvbRenderer, VobSubRenderer, createAutoSubtitleRenderer } from './ts/renderers';
|
|
16
18
|
// Re-export format detection utilities
|
|
17
19
|
export { detectSubtitleFormat } from './ts/utils';
|
|
20
|
+
export { fetchSubtitleAsset, fetchSubtitleText, probeRangeSupport } from './ts/range-loader';
|
|
18
21
|
// =============================================================================
|
|
19
22
|
// Legacy Aliases (for backward compatibility)
|
|
20
23
|
// =============================================================================
|
package/dist/wrapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6CH,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEjH,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE7E,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,qCAAqC,EACrC,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAE1B,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE/G,iCAAiC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEpF,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,0BAA0B,EAE3B,MAAM,gBAAgB,CAAA;AAEvB,uCAAuC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAIlB,MAAM,mBAAmB,CAAA;AAE1B,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAEhF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAA;AAEvC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAA;AAE7C,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# libbitsub player integration recipes
|
|
2
|
+
|
|
3
|
+
Optional adapters ship with the core package as **subpath exports**. They keep `libbitsub` itself dependency-free: player/React packages are optional peer dependencies and are only required when you import that adapter.
|
|
4
|
+
|
|
5
|
+
| Integration | Import | Peer dependency |
|
|
6
|
+
| ----------------- | ----------------------------------------- | ----------------------- |
|
|
7
|
+
| Shared controller | `libbitsub/integrations` (`attachBitSub`) | none beyond `libbitsub` |
|
|
8
|
+
| Video.js | `libbitsub/videojs` | `video.js` >= 7 |
|
|
9
|
+
| Shaka Player | `libbitsub/shaka` | `shaka-player` >= 4 |
|
|
10
|
+
| hls.js | `libbitsub/hlsjs` | `hls.js` >= 1 |
|
|
11
|
+
| React | `libbitsub/react` | `react` >= 18 |
|
|
12
|
+
|
|
13
|
+
Bitmap PGS / VobSub / MKS tracks are **not** native HTML text tracks. Each adapter overlays libbitsub on the player's `HTMLVideoElement`.
|
|
14
|
+
|
|
15
|
+
See the per-player folders for copy-paste recipes:
|
|
16
|
+
|
|
17
|
+
- [videojs](./videojs)
|
|
18
|
+
- [shaka](./shaka)
|
|
19
|
+
- [hlsjs](./hlsjs)
|
|
20
|
+
- [react](./react)
|
|
21
|
+
|
|
22
|
+
## Shared controller
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import { attachBitSub } from 'libbitsub/integrations'
|
|
26
|
+
|
|
27
|
+
const bitsub = attachBitSub(videoElement, {
|
|
28
|
+
subUrl: '/subs/movie.sup',
|
|
29
|
+
displaySettings: { scale: 1.05, bottomPadding: 4 }
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
bitsub.setDisplaySettings({ opacity: 0.9 })
|
|
33
|
+
bitsub.load({ subUrl: '/subs/other.sup' })
|
|
34
|
+
bitsub.clear()
|
|
35
|
+
bitsub.dispose()
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Prefer deep imports (`libbitsub/videojs`, …) in apps so unused adapters stay out of the bundle graph.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# hls.js + libbitsub
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install libbitsub hls.js
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Recipe
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import Hls from 'hls.js'
|
|
13
|
+
import { attachBitSubToHls } from 'libbitsub/hlsjs'
|
|
14
|
+
|
|
15
|
+
const video = document.getElementById('video') as HTMLVideoElement
|
|
16
|
+
const hls = new Hls()
|
|
17
|
+
|
|
18
|
+
hls.loadSource('/media/master.m3u8')
|
|
19
|
+
hls.attachMedia(video)
|
|
20
|
+
|
|
21
|
+
// Can be created before or after attachMedia().
|
|
22
|
+
const bitsub = attachBitSubToHls(hls, {
|
|
23
|
+
subUrl: '/subs/movie.sup',
|
|
24
|
+
displaySettings: { aspectMode: 'contain' },
|
|
25
|
+
onEvent: (event) => {
|
|
26
|
+
if (event.type === 'loaded') {
|
|
27
|
+
console.log('bitmap track ready', event.metadata)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
// Runtime swap:
|
|
33
|
+
bitsub.load({ subUrl: '/subs/commentary.sup', fileName: 'commentary.sup' })
|
|
34
|
+
bitsub.clear()
|
|
35
|
+
|
|
36
|
+
// Cleanup (also runs if hls.destroy() fires DESTROYING)
|
|
37
|
+
bitsub.dispose()
|
|
38
|
+
hls.destroy()
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## HTML sketch
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<div style="position: relative">
|
|
45
|
+
<video id="video" controls playsinline></video>
|
|
46
|
+
</div>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Notes
|
|
50
|
+
|
|
51
|
+
- Binds to `hls.media` and re-attaches on `MEDIA_ATTACHED`.
|
|
52
|
+
- Clears on `MEDIA_DETACHED` and disposes on `DESTROYING`.
|
|
53
|
+
- hls.js continues to own HLS text tracks (WebVTT, etc.); libbitsub only draws external bitmap overlays.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# React + libbitsub
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install libbitsub react react-dom
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Hook recipe
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
import { useRef } from 'react'
|
|
13
|
+
import { useBitSub } from 'libbitsub/react'
|
|
14
|
+
|
|
15
|
+
export function VideoWithBitmaps({ src, subUrl }: { src: string; subUrl: string }) {
|
|
16
|
+
const videoRef = useRef<HTMLVideoElement>(null)
|
|
17
|
+
const { error } = useBitSub(videoRef, {
|
|
18
|
+
subUrl,
|
|
19
|
+
fileName: subUrl,
|
|
20
|
+
displaySettings: { scale: 1.05, bottomPadding: 4 },
|
|
21
|
+
onEvent: (event) => {
|
|
22
|
+
if (event.type === 'cue-change') {
|
|
23
|
+
console.log('cue', event.cue)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<div style={{ position: 'relative' }}>
|
|
30
|
+
<video ref={videoRef} src={src} controls playsInline style={{ width: '100%' }} />
|
|
31
|
+
{error ? <p role='alert'>{error.message}</p> : null}
|
|
32
|
+
</div>
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Overlay component recipe
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
import { useRef } from 'react'
|
|
41
|
+
import { BitSubOverlay } from 'libbitsub/react'
|
|
42
|
+
|
|
43
|
+
export function Player({ src, subUrl }: { src: string; subUrl: string }) {
|
|
44
|
+
const videoRef = useRef<HTMLVideoElement>(null)
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<div style={{ position: 'relative' }}>
|
|
48
|
+
<video ref={videoRef} src={src} controls playsInline />
|
|
49
|
+
<BitSubOverlay videoRef={videoRef} subUrl={subUrl} displaySettings={{ aspectMode: 'cover' }} />
|
|
50
|
+
</div>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Notes
|
|
56
|
+
|
|
57
|
+
- Prefer **either** `useBitSub` **or** `BitSubOverlay` on the same video — not both.
|
|
58
|
+
- Parent should be non-static (`relative` is enough) so the canvas overlay can position correctly.
|
|
59
|
+
- Changing `subUrl` / content identity disposes and recreates the renderer; layout-only `displaySettings` updates are applied in place.
|
|
60
|
+
- Call sites that need imperative control can read `controller` from `useBitSub` (`load`, `clear`, `setDisplaySettings`).
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Shaka Player + libbitsub
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install libbitsub shaka-player
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Recipe
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import shaka from 'shaka-player'
|
|
13
|
+
import { attachBitSubToShaka } from 'libbitsub/shaka'
|
|
14
|
+
|
|
15
|
+
shaka.polyfill.installAll()
|
|
16
|
+
|
|
17
|
+
const video = document.getElementById('video') as HTMLVideoElement
|
|
18
|
+
const player = new shaka.Player()
|
|
19
|
+
await player.attach(video)
|
|
20
|
+
await player.load('/media/manifest.mpd')
|
|
21
|
+
|
|
22
|
+
// Bitmap tracks are external overlays (not Shaka TextTrack objects).
|
|
23
|
+
const bitsub = attachBitSubToShaka(player, {
|
|
24
|
+
subUrl: '/subs/movie.sup',
|
|
25
|
+
prefetchWindow: { before: 1, after: 2 },
|
|
26
|
+
onError: (error) => console.error(error)
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
// Switch tracks at runtime:
|
|
30
|
+
bitsub.load({
|
|
31
|
+
subUrl: '/subs/movie.idx', // companion .sub inferred / provide subUrl to .sub
|
|
32
|
+
idxUrl: '/subs/movie.idx',
|
|
33
|
+
fileName: 'movie.sub'
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// Prefer explicit VobSub pair:
|
|
37
|
+
bitsub.load({
|
|
38
|
+
subUrl: '/subs/movie.sub',
|
|
39
|
+
idxUrl: '/subs/movie.idx'
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
bitsub.setDisplaySettings({ safeArea: 5, opacity: 0.95 })
|
|
43
|
+
|
|
44
|
+
// Cleanup
|
|
45
|
+
bitsub.dispose()
|
|
46
|
+
await player.destroy()
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## HTML sketch
|
|
50
|
+
|
|
51
|
+
```html
|
|
52
|
+
<div style="position: relative">
|
|
53
|
+
<video id="video" controls playsinline></video>
|
|
54
|
+
</div>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Notes
|
|
58
|
+
|
|
59
|
+
- Uses `player.getMediaElement()` and requires an `HTMLVideoElement`.
|
|
60
|
+
- Listens for Shaka `loaded` / `unloading` when available to rebind or clear.
|
|
61
|
+
- Keep using Shaka's native text pipeline for WebVTT/TTML; use libbitsub only for PGS/VobSub/MKS bitmaps.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Video.js + libbitsub
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install libbitsub video.js
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Recipe
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import videojs from 'video.js'
|
|
13
|
+
import 'video.js/dist/video-js.css'
|
|
14
|
+
import { registerBitSubPlugin } from 'libbitsub/videojs'
|
|
15
|
+
|
|
16
|
+
registerBitSubPlugin(videojs)
|
|
17
|
+
|
|
18
|
+
const player = videojs('my-video', {
|
|
19
|
+
controls: true,
|
|
20
|
+
sources: [{ src: '/media/movie.mp4', type: 'video/mp4' }]
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
// Autoload a PGS track when the plugin starts:
|
|
24
|
+
const bitsub = player.bitsub({
|
|
25
|
+
subUrl: '/subs/movie.sup',
|
|
26
|
+
displaySettings: { aspectMode: 'cover', bottomPadding: 6 },
|
|
27
|
+
onEvent: (event) => console.log('bitsub', event)
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
// Or load later (e.g. after the user picks a language):
|
|
31
|
+
bitsub.load({
|
|
32
|
+
subUrl: '/subs/movie.eng.sup',
|
|
33
|
+
fileName: 'movie.eng.sup'
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
bitsub.setDisplaySettings({ scale: 1.1 })
|
|
37
|
+
bitsub.clear()
|
|
38
|
+
|
|
39
|
+
// Plugin resources are released with the player:
|
|
40
|
+
// player.dispose()
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## HTML sketch
|
|
44
|
+
|
|
45
|
+
```html
|
|
46
|
+
<video id="my-video" class="video-js vjs-big-play-centered" playsinline></video>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Ensure the player container can host an absolutely positioned canvas (Video.js already uses non-static positioning on its root).
|
|
50
|
+
|
|
51
|
+
## Notes
|
|
52
|
+
|
|
53
|
+
- Resolves the tech `<video>` element via `player.tech(true)` with a DOM fallback.
|
|
54
|
+
- Rebinds on `loadeddata` if the tech element is replaced.
|
|
55
|
+
- Emits `bitsubload` / `bitsubclear` on the player for light app wiring.
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libbitsub",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"author": "altqx",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"description": "High-performance WASM renderer for graphical subtitles (PGS and
|
|
6
|
+
"description": "High-performance WASM renderer for graphical subtitles (PGS, VobSub, and DVB)",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/altqx/libbitsub"
|
|
@@ -12,31 +12,65 @@
|
|
|
12
12
|
"libbitsub",
|
|
13
13
|
"pgs",
|
|
14
14
|
"vobsub",
|
|
15
|
+
"dvb",
|
|
15
16
|
"subtitle",
|
|
16
17
|
"wasm",
|
|
17
18
|
"rust",
|
|
18
19
|
"rendering",
|
|
19
20
|
"video",
|
|
20
|
-
"player"
|
|
21
|
+
"player",
|
|
22
|
+
"videojs",
|
|
23
|
+
"shaka",
|
|
24
|
+
"hls.js",
|
|
25
|
+
"react"
|
|
21
26
|
],
|
|
22
27
|
"main": "dist/index.js",
|
|
23
28
|
"module": "dist/index.js",
|
|
24
29
|
"types": "dist/index.d.ts",
|
|
25
30
|
"exports": {
|
|
26
31
|
".": {
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
27
33
|
"import": "./dist/index.js",
|
|
28
34
|
"require": "./dist/index.js",
|
|
29
|
-
"
|
|
35
|
+
"default": "./dist/index.js"
|
|
30
36
|
},
|
|
31
37
|
"./pkg": {
|
|
38
|
+
"types": "./pkg/libbitsub.d.ts",
|
|
32
39
|
"import": "./pkg/libbitsub.js",
|
|
33
|
-
"
|
|
40
|
+
"default": "./pkg/libbitsub.js"
|
|
41
|
+
},
|
|
42
|
+
"./videojs": {
|
|
43
|
+
"types": "./dist/integrations/videojs.d.ts",
|
|
44
|
+
"import": "./dist/integrations/videojs.js",
|
|
45
|
+
"default": "./dist/integrations/videojs.js"
|
|
46
|
+
},
|
|
47
|
+
"./shaka": {
|
|
48
|
+
"types": "./dist/integrations/shaka.d.ts",
|
|
49
|
+
"import": "./dist/integrations/shaka.js",
|
|
50
|
+
"default": "./dist/integrations/shaka.js"
|
|
51
|
+
},
|
|
52
|
+
"./hlsjs": {
|
|
53
|
+
"types": "./dist/integrations/hlsjs.d.ts",
|
|
54
|
+
"import": "./dist/integrations/hlsjs.js",
|
|
55
|
+
"default": "./dist/integrations/hlsjs.js"
|
|
56
|
+
},
|
|
57
|
+
"./react": {
|
|
58
|
+
"types": "./dist/integrations/react.d.ts",
|
|
59
|
+
"import": "./dist/integrations/react.js",
|
|
60
|
+
"default": "./dist/integrations/react.js"
|
|
61
|
+
},
|
|
62
|
+
"./integrations": {
|
|
63
|
+
"types": "./dist/integrations/index.d.ts",
|
|
64
|
+
"import": "./dist/integrations/index.js",
|
|
65
|
+
"default": "./dist/integrations/index.js"
|
|
34
66
|
}
|
|
35
67
|
},
|
|
36
68
|
"files": [
|
|
37
69
|
"dist",
|
|
38
70
|
"pkg",
|
|
39
|
-
"src/wrapper.ts"
|
|
71
|
+
"src/wrapper.ts",
|
|
72
|
+
"src/integrations",
|
|
73
|
+
"examples"
|
|
40
74
|
],
|
|
41
75
|
"scripts": {
|
|
42
76
|
"build:wasm": "wasm-pack build --target web --out-dir pkg",
|
|
@@ -45,15 +79,39 @@
|
|
|
45
79
|
"build:ts": "tsc",
|
|
46
80
|
"build": "bun run build:wasm:release && bun run build:ts",
|
|
47
81
|
"clean": "rm -rf pkg pkg-bundler dist target",
|
|
48
|
-
"test": "cargo test",
|
|
82
|
+
"test": "cargo test --workspace",
|
|
83
|
+
"test:ts": "bun test src/ts",
|
|
84
|
+
"test:visual": "bun tests/visual/run.mjs",
|
|
85
|
+
"test:all": "bun run test && bun run test:ts && bun run test:visual",
|
|
49
86
|
"test:wasm": "wasm-pack test --headless --chrome",
|
|
50
87
|
"format": "cargo fmt && prettier . --write"
|
|
51
88
|
},
|
|
52
89
|
"devDependencies": {
|
|
90
|
+
"@types/react": "^19.2.17",
|
|
53
91
|
"prettier": "^3.9.6",
|
|
92
|
+
"react": "^19.2.8",
|
|
54
93
|
"typescript": "^7.0.2"
|
|
55
94
|
},
|
|
56
|
-
"peerDependencies": {
|
|
95
|
+
"peerDependencies": {
|
|
96
|
+
"hls.js": ">=1.0.0",
|
|
97
|
+
"react": ">=18.0.0",
|
|
98
|
+
"shaka-player": ">=4.0.0",
|
|
99
|
+
"video.js": ">=7.0.0"
|
|
100
|
+
},
|
|
101
|
+
"peerDependenciesMeta": {
|
|
102
|
+
"hls.js": {
|
|
103
|
+
"optional": true
|
|
104
|
+
},
|
|
105
|
+
"react": {
|
|
106
|
+
"optional": true
|
|
107
|
+
},
|
|
108
|
+
"shaka-player": {
|
|
109
|
+
"optional": true
|
|
110
|
+
},
|
|
111
|
+
"video.js": {
|
|
112
|
+
"optional": true
|
|
113
|
+
}
|
|
114
|
+
},
|
|
57
115
|
"engines": {
|
|
58
116
|
"node": ">=18"
|
|
59
117
|
},
|