avbridge 2.3.0 → 2.5.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/CHANGELOG.md +73 -0
- package/dist/{chunk-6UUT4BEA.cjs → chunk-2IJ66NTD.cjs} +13 -20
- package/dist/chunk-2IJ66NTD.cjs.map +1 -0
- package/dist/{chunk-XKPSTC34.cjs → chunk-2XW2O3YI.cjs} +5 -20
- package/dist/chunk-2XW2O3YI.cjs.map +1 -0
- package/dist/chunk-5KVLE6YI.js +167 -0
- package/dist/chunk-5KVLE6YI.js.map +1 -0
- package/dist/{chunk-2PGRFCWB.js → chunk-CPJLFFCC.js} +8 -18
- package/dist/chunk-CPJLFFCC.js.map +1 -0
- package/dist/chunk-CPZ7PXAM.cjs +240 -0
- package/dist/chunk-CPZ7PXAM.cjs.map +1 -0
- package/dist/{chunk-QQXBPW72.js → chunk-E76AMWI4.js} +4 -18
- package/dist/chunk-E76AMWI4.js.map +1 -0
- package/dist/{chunk-NV7ILLWH.js → chunk-KY2GPCT7.js} +347 -665
- package/dist/chunk-KY2GPCT7.js.map +1 -0
- package/dist/chunk-LUFA47FP.js +19 -0
- package/dist/chunk-LUFA47FP.js.map +1 -0
- package/dist/chunk-Q2VUO52Z.cjs +374 -0
- package/dist/chunk-Q2VUO52Z.cjs.map +1 -0
- package/dist/chunk-QDJLQR53.cjs +22 -0
- package/dist/chunk-QDJLQR53.cjs.map +1 -0
- package/dist/chunk-S4WAZC2T.cjs +173 -0
- package/dist/chunk-S4WAZC2T.cjs.map +1 -0
- package/dist/chunk-SMH6IOP2.js +368 -0
- package/dist/chunk-SMH6IOP2.js.map +1 -0
- package/dist/chunk-SR3MPV4D.js +237 -0
- package/dist/chunk-SR3MPV4D.js.map +1 -0
- package/dist/{chunk-7RGG6ME7.cjs → chunk-TBW26OPP.cjs} +365 -688
- package/dist/chunk-TBW26OPP.cjs.map +1 -0
- package/dist/chunk-X2K3GIWE.js +235 -0
- package/dist/chunk-X2K3GIWE.js.map +1 -0
- package/dist/chunk-ZCUXHW55.cjs +242 -0
- package/dist/chunk-ZCUXHW55.cjs.map +1 -0
- package/dist/element-browser.js +799 -493
- package/dist/element-browser.js.map +1 -1
- package/dist/element.cjs +58 -4
- package/dist/element.cjs.map +1 -1
- package/dist/element.d.cts +38 -0
- package/dist/element.d.ts +38 -0
- package/dist/element.js +57 -3
- package/dist/element.js.map +1 -1
- package/dist/index.cjs +523 -393
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +494 -366
- package/dist/index.js.map +1 -1
- package/dist/libav-demux-H2GS46GH.cjs +27 -0
- package/dist/libav-demux-H2GS46GH.cjs.map +1 -0
- package/dist/libav-demux-OWZ4T2YW.js +6 -0
- package/dist/libav-demux-OWZ4T2YW.js.map +1 -0
- package/dist/{libav-import-GST2AMPL.cjs → libav-import-2ZVKV2E7.cjs} +2 -2
- package/dist/{libav-import-GST2AMPL.cjs.map → libav-import-2ZVKV2E7.cjs.map} +1 -1
- package/dist/{libav-import-2JURFHEW.js → libav-import-6MGLCXVQ.js} +2 -2
- package/dist/{libav-import-2JURFHEW.js.map → libav-import-6MGLCXVQ.js.map} +1 -1
- package/dist/player.cjs +601 -470
- package/dist/player.cjs.map +1 -1
- package/dist/player.d.cts +50 -0
- package/dist/player.d.ts +50 -0
- package/dist/player.js +580 -449
- package/dist/player.js.map +1 -1
- package/dist/remux-OBSMIENG.cjs +35 -0
- package/dist/remux-OBSMIENG.cjs.map +1 -0
- package/dist/remux-WBYIZBBX.js +10 -0
- package/dist/remux-WBYIZBBX.js.map +1 -0
- package/dist/source-4TZ6KMNV.js +4 -0
- package/dist/{source-F656KYYV.js.map → source-4TZ6KMNV.js.map} +1 -1
- package/dist/source-7YLO6E7X.cjs +29 -0
- package/dist/{source-73CAH6HW.cjs.map → source-7YLO6E7X.cjs.map} +1 -1
- package/dist/source-MTX5ELUZ.js +4 -0
- package/dist/{source-QJR3OHTW.js.map → source-MTX5ELUZ.js.map} +1 -1
- package/dist/source-VFLXLOCN.cjs +29 -0
- package/dist/{source-VB74JQ7Z.cjs.map → source-VFLXLOCN.cjs.map} +1 -1
- package/dist/subtitles-4T74JRGT.js +4 -0
- package/dist/subtitles-4T74JRGT.js.map +1 -0
- package/dist/subtitles-QUH4LPI4.cjs +29 -0
- package/dist/subtitles-QUH4LPI4.cjs.map +1 -0
- package/package.json +1 -1
- package/src/convert/remux.ts +1 -35
- package/src/convert/transcode-libav.ts +691 -0
- package/src/convert/transcode.ts +12 -4
- package/src/element/avbridge-player.ts +16 -0
- package/src/element/avbridge-video.ts +54 -0
- package/src/errors.ts +6 -0
- package/src/player.ts +15 -16
- package/src/strategies/fallback/decoder.ts +96 -173
- package/src/strategies/fallback/index.ts +19 -2
- package/src/strategies/fallback/libav-import.ts +9 -1
- package/src/strategies/fallback/video-renderer.ts +107 -0
- package/src/strategies/hybrid/decoder.ts +88 -180
- package/src/strategies/hybrid/index.ts +17 -2
- package/src/strategies/native.ts +6 -3
- package/src/strategies/remux/index.ts +14 -2
- package/src/strategies/remux/pipeline.ts +72 -12
- package/src/subtitles/render.ts +8 -0
- package/src/util/libav-demux.ts +405 -0
- package/dist/chunk-2PGRFCWB.js.map +0 -1
- package/dist/chunk-6UUT4BEA.cjs.map +0 -1
- package/dist/chunk-7RGG6ME7.cjs.map +0 -1
- package/dist/chunk-NV7ILLWH.js.map +0 -1
- package/dist/chunk-QQXBPW72.js.map +0 -1
- package/dist/chunk-XKPSTC34.cjs.map +0 -1
- package/dist/source-73CAH6HW.cjs +0 -28
- package/dist/source-F656KYYV.js +0 -3
- package/dist/source-QJR3OHTW.js +0 -3
- package/dist/source-VB74JQ7Z.cjs +0 -28
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQ2VUO52Z_cjs = require('./chunk-Q2VUO52Z.cjs');
|
|
4
|
+
require('./chunk-ZCUXHW55.cjs');
|
|
5
|
+
require('./chunk-2IJ66NTD.cjs');
|
|
6
|
+
require('./chunk-QDJLQR53.cjs');
|
|
7
|
+
require('./chunk-CPZ7PXAM.cjs');
|
|
8
|
+
require('./chunk-Z33SBWL5.cjs');
|
|
9
|
+
require('./chunk-G4APZMCP.cjs');
|
|
10
|
+
require('./chunk-F3LQJKXK.cjs');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
Object.defineProperty(exports, "createOutputFormat", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return chunkQ2VUO52Z_cjs.createOutputFormat; }
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "generateFilename", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return chunkQ2VUO52Z_cjs.generateFilename; }
|
|
21
|
+
});
|
|
22
|
+
Object.defineProperty(exports, "mimeForFormat", {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () { return chunkQ2VUO52Z_cjs.mimeForFormat; }
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(exports, "remux", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () { return chunkQ2VUO52Z_cjs.remux; }
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "validateRemuxEligibility", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () { return chunkQ2VUO52Z_cjs.validateRemuxEligibility; }
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=remux-OBSMIENG.cjs.map
|
|
35
|
+
//# sourceMappingURL=remux-OBSMIENG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"remux-OBSMIENG.cjs"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { createOutputFormat, generateFilename, mimeForFormat, remux, validateRemuxEligibility } from './chunk-SMH6IOP2.js';
|
|
2
|
+
import './chunk-SR3MPV4D.js';
|
|
3
|
+
import './chunk-CPJLFFCC.js';
|
|
4
|
+
import './chunk-LUFA47FP.js';
|
|
5
|
+
import './chunk-X2K3GIWE.js';
|
|
6
|
+
import './chunk-DCSOQH2N.js';
|
|
7
|
+
import './chunk-5DMTJVIU.js';
|
|
8
|
+
import './chunk-5YAWWKA3.js';
|
|
9
|
+
//# sourceMappingURL=remux-WBYIZBBX.js.map
|
|
10
|
+
//# sourceMappingURL=remux-WBYIZBBX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"remux-WBYIZBBX.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"source-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"source-4TZ6KMNV.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk2XW2O3YI_cjs = require('./chunk-2XW2O3YI.cjs');
|
|
4
|
+
require('./chunk-QDJLQR53.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "isInMemorySource", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunk2XW2O3YI_cjs.isInMemorySource; }
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "normalizeSource", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunk2XW2O3YI_cjs.normalizeSource; }
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "sniffContainer", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunk2XW2O3YI_cjs.sniffContainer; }
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "sniffContainerFromBytes", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return chunk2XW2O3YI_cjs.sniffContainerFromBytes; }
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "sniffNormalizedSource", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () { return chunk2XW2O3YI_cjs.sniffNormalizedSource; }
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=source-7YLO6E7X.cjs.map
|
|
29
|
+
//# sourceMappingURL=source-7YLO6E7X.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"source-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"source-7YLO6E7X.cjs"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"source-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"source-MTX5ELUZ.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk2IJ66NTD_cjs = require('./chunk-2IJ66NTD.cjs');
|
|
4
|
+
require('./chunk-QDJLQR53.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "isInMemorySource", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunk2IJ66NTD_cjs.isInMemorySource; }
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "normalizeSource", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunk2IJ66NTD_cjs.normalizeSource; }
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "sniffContainer", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunk2IJ66NTD_cjs.sniffContainer; }
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "sniffContainerFromBytes", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return chunk2IJ66NTD_cjs.sniffContainerFromBytes; }
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "sniffNormalizedSource", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () { return chunk2IJ66NTD_cjs.sniffNormalizedSource; }
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=source-VFLXLOCN.cjs.map
|
|
29
|
+
//# sourceMappingURL=source-VFLXLOCN.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"source-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"source-VFLXLOCN.cjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"subtitles-4T74JRGT.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkS4WAZC2T_cjs = require('./chunk-S4WAZC2T.cjs');
|
|
4
|
+
require('./chunk-QDJLQR53.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "SubtitleOverlay", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunkS4WAZC2T_cjs.SubtitleOverlay; }
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "SubtitleResourceBag", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunkS4WAZC2T_cjs.SubtitleResourceBag; }
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "attachSubtitleTracks", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunkS4WAZC2T_cjs.attachSubtitleTracks; }
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "discoverSidecars", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return chunkS4WAZC2T_cjs.discoverSidecars; }
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "srtToVtt", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () { return chunkS4WAZC2T_cjs.srtToVtt; }
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=subtitles-QUH4LPI4.cjs.map
|
|
29
|
+
//# sourceMappingURL=subtitles-QUH4LPI4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"subtitles-QUH4LPI4.cjs"}
|
package/package.json
CHANGED
package/src/convert/remux.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
buildMediabunnySourceFromInput,
|
|
19
19
|
} from "../probe/mediabunny.js";
|
|
20
20
|
import { normalizeSource } from "../util/source.js";
|
|
21
|
+
import { sanitizePacketTimestamp } from "../util/libav-demux.js";
|
|
21
22
|
import { prepareLibavInput, type LibavInputHandle } from "../util/libav-http-reader.js";
|
|
22
23
|
import type {
|
|
23
24
|
MediaInput,
|
|
@@ -385,41 +386,6 @@ async function doLibavRemux(
|
|
|
385
386
|
};
|
|
386
387
|
}
|
|
387
388
|
|
|
388
|
-
// ── Packet timestamp sanitizer (from hybrid/decoder.ts) ─────────────────────
|
|
389
|
-
|
|
390
|
-
function sanitizePacketTimestamp(
|
|
391
|
-
pkt: LibavPacket,
|
|
392
|
-
nextUs: () => number,
|
|
393
|
-
fallbackTimeBase?: [number, number],
|
|
394
|
-
): void {
|
|
395
|
-
const lo = pkt.pts ?? 0;
|
|
396
|
-
const hi = pkt.ptshi ?? 0;
|
|
397
|
-
const isInvalid = (hi === -2147483648 && lo === 0) || !Number.isFinite(lo);
|
|
398
|
-
if (isInvalid) {
|
|
399
|
-
const us = nextUs();
|
|
400
|
-
pkt.pts = us;
|
|
401
|
-
pkt.ptshi = 0;
|
|
402
|
-
pkt.time_base_num = 1;
|
|
403
|
-
pkt.time_base_den = 1_000_000;
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
const tb = fallbackTimeBase ?? [1, 1_000_000];
|
|
407
|
-
const pts64 = hi * 0x100000000 + lo;
|
|
408
|
-
const us = Math.round((pts64 * 1_000_000 * tb[0]) / tb[1]);
|
|
409
|
-
if (Number.isFinite(us) && Math.abs(us) <= Number.MAX_SAFE_INTEGER) {
|
|
410
|
-
pkt.pts = us;
|
|
411
|
-
pkt.ptshi = us < 0 ? -1 : 0;
|
|
412
|
-
pkt.time_base_num = 1;
|
|
413
|
-
pkt.time_base_den = 1_000_000;
|
|
414
|
-
return;
|
|
415
|
-
}
|
|
416
|
-
const fallback = nextUs();
|
|
417
|
-
pkt.pts = fallback;
|
|
418
|
-
pkt.ptshi = 0;
|
|
419
|
-
pkt.time_base_num = 1;
|
|
420
|
-
pkt.time_base_den = 1_000_000;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
389
|
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
424
390
|
|
|
425
391
|
/** @internal Exported for use by transcode(). */
|