movi-player 0.3.0 → 0.3.2

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.
Files changed (61) hide show
  1. package/AGENTS.md +2 -0
  2. package/README.md +54 -7
  3. package/dist/core/MoviPlayer.d.ts +77 -1
  4. package/dist/core/MoviPlayer.d.ts.map +1 -1
  5. package/dist/core/MoviPlayer.js +667 -121
  6. package/dist/core/MoviPlayer.js.map +1 -1
  7. package/dist/core/PlayerState.js +1 -1
  8. package/dist/core/PlayerState.js.map +1 -1
  9. package/dist/decode/VideoDecoder.d.ts.map +1 -1
  10. package/dist/decode/VideoDecoder.js +6 -2
  11. package/dist/decode/VideoDecoder.js.map +1 -1
  12. package/dist/demuxer.cjs +315 -129
  13. package/dist/demuxer.js +377 -191
  14. package/dist/element.cjs +58309 -16596
  15. package/dist/element.js +59520 -17807
  16. package/dist/index.cjs +58309 -16596
  17. package/dist/index.js +59520 -17807
  18. package/dist/player.cjs +56818 -15360
  19. package/dist/player.js +57818 -16360
  20. package/dist/render/DASHPlayerWrapper.d.ts +65 -0
  21. package/dist/render/DASHPlayerWrapper.d.ts.map +1 -0
  22. package/dist/render/DASHPlayerWrapper.js +540 -0
  23. package/dist/render/DASHPlayerWrapper.js.map +1 -0
  24. package/dist/render/HLSPlayerWrapper.d.ts.map +1 -1
  25. package/dist/render/HLSPlayerWrapper.js +47 -11
  26. package/dist/render/HLSPlayerWrapper.js.map +1 -1
  27. package/dist/render/MoviElement.d.ts +97 -0
  28. package/dist/render/MoviElement.d.ts.map +1 -1
  29. package/dist/render/MoviElement.js +852 -152
  30. package/dist/render/MoviElement.js.map +1 -1
  31. package/dist/render/ShakaPlayerWrapper.d.ts +111 -0
  32. package/dist/render/ShakaPlayerWrapper.d.ts.map +1 -0
  33. package/dist/render/ShakaPlayerWrapper.js +956 -0
  34. package/dist/render/ShakaPlayerWrapper.js.map +1 -0
  35. package/dist/source/DashFallback.d.ts +32 -0
  36. package/dist/source/DashFallback.d.ts.map +1 -0
  37. package/dist/source/DashFallback.js +142 -0
  38. package/dist/source/DashFallback.js.map +1 -0
  39. package/dist/source/DashManifest.d.ts +34 -0
  40. package/dist/source/DashManifest.d.ts.map +1 -0
  41. package/dist/source/DashManifest.js +194 -0
  42. package/dist/source/DashManifest.js.map +1 -0
  43. package/dist/source/DashSegmentSource.d.ts +32 -0
  44. package/dist/source/DashSegmentSource.d.ts.map +1 -0
  45. package/dist/source/DashSegmentSource.js +86 -0
  46. package/dist/source/DashSegmentSource.js.map +1 -0
  47. package/dist/source/HttpSource.d.ts +64 -0
  48. package/dist/source/HttpSource.d.ts.map +1 -1
  49. package/dist/source/HttpSource.js +444 -57
  50. package/dist/source/HttpSource.js.map +1 -1
  51. package/dist/source/ThumbnailHttpSource.d.ts +13 -0
  52. package/dist/source/ThumbnailHttpSource.d.ts.map +1 -1
  53. package/dist/source/ThumbnailHttpSource.js +70 -8
  54. package/dist/source/ThumbnailHttpSource.js.map +1 -1
  55. package/dist/source/index.d.ts +2 -0
  56. package/dist/source/index.d.ts.map +1 -1
  57. package/dist/source/index.js +1 -0
  58. package/dist/source/index.js.map +1 -1
  59. package/dist/types.d.ts +10 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +16 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShakaPlayerWrapper.js","sourceRoot":"","sources":["../../src/render/ShakaPlayerWrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Fallback resolver for MPEG-DASH manifests that Shaka Player refuses to load.
3
+ *
4
+ * Some valid-but-under-specified DASH manifests declare each Representation as a
5
+ * single self-contained file via a bare <BaseURL>, with NO <SegmentBase>,
6
+ * <SegmentList>, or <SegmentTemplate>. The DASH spec lets a player treat that
7
+ * file as one segment and read its internal `sidx` index, which is exactly what
8
+ * dash.js does — but Shaka is strict and skips every such Representation
9
+ * ("Representation does not contain a segment information source"), failing the
10
+ * whole load with DASH_EMPTY_PERIOD (4004).
11
+ *
12
+ * Those files are just ordinary (fragmented) MP4s, which the player's FFmpeg
13
+ * demuxer reads natively. This module probes the manifest and, when it finds the
14
+ * bare-BaseURL case, resolves the best video file URL plus (for demuxed content)
15
+ * the separate audio file URL, so the caller can play them through the demuxer
16
+ * (+ a native <audio> element for the split audio).
17
+ *
18
+ * Returns null when the manifest has proper segment info (so Shaka's failure was
19
+ * for some other reason and this fallback wouldn't help).
20
+ */
21
+ export interface DashFallbackPlan {
22
+ /** Single-file video (or muxed) Representation to feed the demuxer. */
23
+ videoUrl: string;
24
+ /** Separate audio file for demuxed content; omitted when muxed/audio-only. */
25
+ audioUrl?: string;
26
+ }
27
+ /**
28
+ * Probe a DASH manifest for the bare-BaseURL single-file case. Returns the video
29
+ * (and any separate audio) file URLs, or null if it's not that case.
30
+ */
31
+ export declare function analyzeDashFallback(manifestUrl: string, headers?: Record<string, string>): Promise<DashFallbackPlan | null>;
32
+ //# sourceMappingURL=DashFallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashFallback.d.ts","sourceRoot":"","sources":["../../src/source/DashFallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8CD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkElC"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Fallback resolver for MPEG-DASH manifests that Shaka Player refuses to load.
3
+ *
4
+ * Some valid-but-under-specified DASH manifests declare each Representation as a
5
+ * single self-contained file via a bare <BaseURL>, with NO <SegmentBase>,
6
+ * <SegmentList>, or <SegmentTemplate>. The DASH spec lets a player treat that
7
+ * file as one segment and read its internal `sidx` index, which is exactly what
8
+ * dash.js does — but Shaka is strict and skips every such Representation
9
+ * ("Representation does not contain a segment information source"), failing the
10
+ * whole load with DASH_EMPTY_PERIOD (4004).
11
+ *
12
+ * Those files are just ordinary (fragmented) MP4s, which the player's FFmpeg
13
+ * demuxer reads natively. This module probes the manifest and, when it finds the
14
+ * bare-BaseURL case, resolves the best video file URL plus (for demuxed content)
15
+ * the separate audio file URL, so the caller can play them through the demuxer
16
+ * (+ a native <audio> element for the split audio).
17
+ *
18
+ * Returns null when the manifest has proper segment info (so Shaka's failure was
19
+ * for some other reason and this fallback wouldn't help).
20
+ */
21
+ import { Logger } from "../utils/Logger";
22
+ const TAG = "DashFallback";
23
+ const AUDIO_CODEC_RE = /\b(mp4a|ac-3|ec-3|ac-4|opus|vorbis|flac|dtsc|dtse)\b/i;
24
+ const VIDEO_CODEC_RE = /\b(avc[13]|hvc1|hev1|vp0[89]|vp8|vp9|av01|dvh)/i;
25
+ /** Resolve a (possibly relative) URL against a base. */
26
+ function resolve(base, rel) {
27
+ if (!rel)
28
+ return base;
29
+ try {
30
+ return new URL(rel, base).href;
31
+ }
32
+ catch {
33
+ return base;
34
+ }
35
+ }
36
+ /** First <BaseURL> text child of an element, if any. */
37
+ function baseUrlOf(el) {
38
+ if (!el)
39
+ return null;
40
+ for (const child of Array.from(el.children)) {
41
+ if (child.localName === "BaseURL")
42
+ return child.textContent?.trim() || null;
43
+ }
44
+ return null;
45
+ }
46
+ /** A Representation is "bare" when it has a BaseURL but no segment addressing. */
47
+ function isBareRepresentation(rep, adaptation) {
48
+ if (!baseUrlOf(rep))
49
+ return false;
50
+ const hasSegmentInfo = (el) => el.getElementsByTagName("SegmentTemplate").length > 0 ||
51
+ el.getElementsByTagName("SegmentList").length > 0 ||
52
+ el.getElementsByTagName("SegmentBase").length > 0;
53
+ return !hasSegmentInfo(rep) && !hasSegmentInfo(adaptation);
54
+ }
55
+ function contentTypeOf(rep, adaptation) {
56
+ const ct = (adaptation.getAttribute("contentType") ||
57
+ rep.getAttribute("mimeType") ||
58
+ adaptation.getAttribute("mimeType") ||
59
+ "").toLowerCase();
60
+ if (ct.includes("audio"))
61
+ return "audio";
62
+ if (ct.includes("video"))
63
+ return "video";
64
+ const codecs = rep.getAttribute("codecs") || adaptation.getAttribute("codecs") || "";
65
+ if (VIDEO_CODEC_RE.test(codecs))
66
+ return "video";
67
+ if (AUDIO_CODEC_RE.test(codecs))
68
+ return "audio";
69
+ return "other";
70
+ }
71
+ /**
72
+ * Probe a DASH manifest for the bare-BaseURL single-file case. Returns the video
73
+ * (and any separate audio) file URLs, or null if it's not that case.
74
+ */
75
+ export async function analyzeDashFallback(manifestUrl, headers) {
76
+ let xml;
77
+ try {
78
+ const res = await fetch(manifestUrl, { headers });
79
+ if (!res.ok)
80
+ return null;
81
+ xml = await res.text();
82
+ }
83
+ catch (e) {
84
+ Logger.warn(TAG, "Failed to fetch DASH manifest for fallback", e);
85
+ return null;
86
+ }
87
+ let doc;
88
+ try {
89
+ doc = new DOMParser().parseFromString(xml, "application/xml");
90
+ }
91
+ catch {
92
+ return null;
93
+ }
94
+ if (doc.getElementsByTagName("parsererror").length > 0)
95
+ return null;
96
+ const mpd = doc.getElementsByTagName("MPD")[0];
97
+ if (!mpd)
98
+ return null;
99
+ const mpdBase = resolve(manifestUrl, baseUrlOf(mpd));
100
+ let bestVideo = null;
101
+ let bestAudio = null;
102
+ // First period only — these single-file manifests are single-period VOD.
103
+ const period = mpd.getElementsByTagName("Period")[0];
104
+ if (!period)
105
+ return null;
106
+ const periodBase = resolve(mpdBase, baseUrlOf(period));
107
+ for (const adaptation of Array.from(period.getElementsByTagName("AdaptationSet"))) {
108
+ const adaptationBase = resolve(periodBase, baseUrlOf(adaptation));
109
+ for (const rep of Array.from(adaptation.getElementsByTagName("Representation"))) {
110
+ if (!isBareRepresentation(rep, adaptation))
111
+ continue;
112
+ const url = resolve(adaptationBase, baseUrlOf(rep));
113
+ const bw = parseInt(rep.getAttribute("bandwidth") || "0", 10);
114
+ const type = contentTypeOf(rep, adaptation);
115
+ const codecs = rep.getAttribute("codecs") || adaptation.getAttribute("codecs") || "";
116
+ const muxed = AUDIO_CODEC_RE.test(codecs) && VIDEO_CODEC_RE.test(codecs);
117
+ if (type === "video") {
118
+ if (!bestVideo || bw > bestVideo.bw)
119
+ bestVideo = { url, bw, muxed };
120
+ }
121
+ else if (type === "audio") {
122
+ if (!bestAudio || bw > bestAudio.bw)
123
+ bestAudio = { url, bw };
124
+ }
125
+ }
126
+ }
127
+ // No bare-BaseURL Representations → Shaka failed for another reason.
128
+ if (!bestVideo && !bestAudio)
129
+ return null;
130
+ // Audio-only manifest: play the audio file through the demuxer directly.
131
+ if (!bestVideo && bestAudio) {
132
+ Logger.info(TAG, `DASH fallback (audio-only) → ${bestAudio.url}`);
133
+ return { videoUrl: bestAudio.url };
134
+ }
135
+ const plan = { videoUrl: bestVideo.url };
136
+ // Muxed file already carries audio; otherwise attach the separate audio file.
137
+ if (!bestVideo.muxed && bestAudio)
138
+ plan.audioUrl = bestAudio.url;
139
+ Logger.info(TAG, `DASH fallback → video=${plan.videoUrl}${plan.audioUrl ? `, audio=${plan.audioUrl}` : " (muxed)"}`);
140
+ return plan;
141
+ }
142
+ //# sourceMappingURL=DashFallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashFallback.js","sourceRoot":"","sources":["../../src/source/DashFallback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Minimal MPEG-DASH manifest analysis for the MULTIPLEXED case.
3
+ *
4
+ * dash.js intentionally refuses multiplexed representations (one Representation
5
+ * carrying both audio and video), but such content is just a fragmented MP4 —
6
+ * which the player's FFmpeg-WASM demuxer reads natively. This module probes a
7
+ * .mpd, decides whether it's multiplexed, and resolves how to feed it to the
8
+ * demuxer:
9
+ *
10
+ * - Single-file (SegmentBase / SegmentList byte-ranges / bare BaseURL): the
11
+ * whole representation lives in one fMP4 file → just play that URL (full
12
+ * range/seek). This is the common GPAC output and what most muxed DASH uses.
13
+ * - Multi-segment (SegmentTemplate / SegmentList with separate `media` URLs):
14
+ * an ordered list of segment URLs to concatenate (handled by DashSegmentSource).
15
+ *
16
+ * Non-multiplexed (standard demuxed) manifests return { multiplexed: false } so
17
+ * the caller keeps using dash.js.
18
+ */
19
+ export interface DashPlan {
20
+ multiplexed: boolean;
21
+ /** Single fMP4 file holding the whole muxed representation. */
22
+ sourceUrl?: string;
23
+ /** Ordered segment URLs (init first) for the multi-segment muxed case. */
24
+ segments?: {
25
+ initUrl: string | null;
26
+ mediaUrls: string[];
27
+ };
28
+ }
29
+ /**
30
+ * Fetch and analyze a DASH manifest. Returns null if it can't be parsed at all
31
+ * (caller should fall back to dash.js).
32
+ */
33
+ export declare function analyzeDashManifest(manifestUrl: string, headers?: Record<string, string>): Promise<DashPlan | null>;
34
+ //# sourceMappingURL=DashManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashManifest.d.ts","sourceRoot":"","sources":["../../src/source/DashManifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5D;AAmCD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6I1B"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Minimal MPEG-DASH manifest analysis for the MULTIPLEXED case.
3
+ *
4
+ * dash.js intentionally refuses multiplexed representations (one Representation
5
+ * carrying both audio and video), but such content is just a fragmented MP4 —
6
+ * which the player's FFmpeg-WASM demuxer reads natively. This module probes a
7
+ * .mpd, decides whether it's multiplexed, and resolves how to feed it to the
8
+ * demuxer:
9
+ *
10
+ * - Single-file (SegmentBase / SegmentList byte-ranges / bare BaseURL): the
11
+ * whole representation lives in one fMP4 file → just play that URL (full
12
+ * range/seek). This is the common GPAC output and what most muxed DASH uses.
13
+ * - Multi-segment (SegmentTemplate / SegmentList with separate `media` URLs):
14
+ * an ordered list of segment URLs to concatenate (handled by DashSegmentSource).
15
+ *
16
+ * Non-multiplexed (standard demuxed) manifests return { multiplexed: false } so
17
+ * the caller keeps using dash.js.
18
+ */
19
+ import { Logger } from "../utils/Logger";
20
+ const TAG = "DashManifest";
21
+ const AUDIO_CODEC_RE = /\b(mp4a|ac-3|ec-3|ac-4|opus|vorbis|flac|dtsc|dtse)\b/i;
22
+ const VIDEO_CODEC_RE = /\b(avc[13]|avc1|hvc1|hev1|vp0[89]|vp8|vp9|av01|dvh)/i;
23
+ /** Resolve a (possibly relative) URL against a base. */
24
+ function resolve(base, rel) {
25
+ if (!rel)
26
+ return base;
27
+ try {
28
+ return new URL(rel, base).href;
29
+ }
30
+ catch {
31
+ return base;
32
+ }
33
+ }
34
+ /** First <BaseURL> text child of an element, if any. */
35
+ function baseUrlOf(el) {
36
+ if (!el)
37
+ return null;
38
+ for (const child of Array.from(el.children)) {
39
+ if (child.localName === "BaseURL")
40
+ return child.textContent?.trim() || null;
41
+ }
42
+ return null;
43
+ }
44
+ /** True if the codecs string carries both an audio and a video codec. */
45
+ function codecsAreMuxed(codecs) {
46
+ if (!codecs)
47
+ return false;
48
+ return AUDIO_CODEC_RE.test(codecs) && VIDEO_CODEC_RE.test(codecs);
49
+ }
50
+ /** True if the element's <ContentComponent>s include both audio and video. */
51
+ function contentComponentsAreMuxed(el) {
52
+ const types = Array.from(el.getElementsByTagName("ContentComponent")).map((c) => (c.getAttribute("contentType") || "").toLowerCase());
53
+ return types.includes("audio") && types.includes("video");
54
+ }
55
+ /**
56
+ * Fetch and analyze a DASH manifest. Returns null if it can't be parsed at all
57
+ * (caller should fall back to dash.js).
58
+ */
59
+ export async function analyzeDashManifest(manifestUrl, headers) {
60
+ let xml;
61
+ try {
62
+ const res = await fetch(manifestUrl, { headers });
63
+ if (!res.ok)
64
+ return null;
65
+ xml = await res.text();
66
+ }
67
+ catch (e) {
68
+ Logger.warn(TAG, "Failed to fetch DASH manifest", e);
69
+ return null;
70
+ }
71
+ let doc;
72
+ try {
73
+ doc = new DOMParser().parseFromString(xml, "application/xml");
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ if (doc.getElementsByTagName("parsererror").length > 0)
79
+ return null;
80
+ const mpd = doc.getElementsByTagName("MPD")[0];
81
+ if (!mpd)
82
+ return null;
83
+ // BaseURL chain: manifest → MPD → Period → AdaptationSet → Representation.
84
+ const mpdBase = resolve(manifestUrl, baseUrlOf(mpd));
85
+ // Find the best (highest-bandwidth) multiplexed representation across periods.
86
+ let best = null;
87
+ for (const period of Array.from(mpd.getElementsByTagName("Period"))) {
88
+ for (const adaptation of Array.from(period.getElementsByTagName("AdaptationSet"))) {
89
+ const adaptationMuxedHint = contentComponentsAreMuxed(adaptation);
90
+ for (const rep of Array.from(adaptation.getElementsByTagName("Representation"))) {
91
+ const codecs = rep.getAttribute("codecs") || adaptation.getAttribute("codecs");
92
+ const muxed = codecsAreMuxed(codecs) || adaptationMuxedHint;
93
+ if (!muxed)
94
+ continue;
95
+ const bw = parseInt(rep.getAttribute("bandwidth") || "0", 10);
96
+ if (!best || bw > best.bw)
97
+ best = { rep, adaptation, period, bw };
98
+ }
99
+ }
100
+ }
101
+ if (!best) {
102
+ return { multiplexed: false };
103
+ }
104
+ const { rep, adaptation, period } = best;
105
+ // Resolve the representation's effective base URL through the chain.
106
+ const periodBase = resolve(mpdBase, baseUrlOf(period));
107
+ const adaptationBase = resolve(periodBase, baseUrlOf(adaptation));
108
+ const repBase = resolve(adaptationBase, baseUrlOf(rep));
109
+ Logger.info(TAG, `Multiplexed representation detected (codecs=${rep.getAttribute("codecs")}, base=${repBase})`);
110
+ // --- Segment addressing ---
111
+ const segmentList = rep.getElementsByTagName("SegmentList")[0] ||
112
+ adaptation.getElementsByTagName("SegmentList")[0];
113
+ const segmentTemplate = rep.getElementsByTagName("SegmentTemplate")[0] ||
114
+ adaptation.getElementsByTagName("SegmentTemplate")[0];
115
+ // SegmentList: byte-ranges into BaseURL = single file; `media` attrs = separate files.
116
+ if (segmentList) {
117
+ const urls = Array.from(segmentList.getElementsByTagName("SegmentURL"));
118
+ const hasSeparateMedia = urls.some((u) => u.getAttribute("media"));
119
+ if (!hasSeparateMedia) {
120
+ // Byte-range segments all point into the BaseURL file → one fMP4.
121
+ return { multiplexed: true, sourceUrl: repBase };
122
+ }
123
+ const init = segmentList.getElementsByTagName("Initialization")[0];
124
+ const initUrl = init?.getAttribute("sourceURL")
125
+ ? resolve(repBase, init.getAttribute("sourceURL"))
126
+ : null;
127
+ const mediaUrls = urls
128
+ .map((u) => u.getAttribute("media"))
129
+ .filter((m) => !!m)
130
+ .map((m) => resolve(repBase, m));
131
+ return { multiplexed: true, segments: { initUrl, mediaUrls } };
132
+ }
133
+ // SegmentTemplate: build init + numbered media URLs.
134
+ if (segmentTemplate) {
135
+ const repId = rep.getAttribute("id") || "";
136
+ const bandwidth = rep.getAttribute("bandwidth") || "0";
137
+ const fill = (tpl, number) => tpl
138
+ .replace(/\$RepresentationID\$/g, repId)
139
+ .replace(/\$Bandwidth\$/g, bandwidth)
140
+ .replace(/\$Number(%0\d+d)?\$/g, (_m, pad) => number === undefined
141
+ ? ""
142
+ : pad
143
+ ? String(number).padStart(parseInt(pad.slice(2), 10), "0")
144
+ : String(number))
145
+ .replace(/\$\$/g, "$");
146
+ const initTpl = segmentTemplate.getAttribute("initialization");
147
+ const mediaTpl = segmentTemplate.getAttribute("media");
148
+ if (!mediaTpl)
149
+ return { multiplexed: true, sourceUrl: repBase };
150
+ const startNumber = parseInt(segmentTemplate.getAttribute("startNumber") || "1", 10);
151
+ // Count segments from SegmentTimeline if present, else from duration.
152
+ const timeline = segmentTemplate.getElementsByTagName("SegmentTimeline")[0];
153
+ let count = 0;
154
+ if (timeline) {
155
+ for (const s of Array.from(timeline.getElementsByTagName("S"))) {
156
+ count += 1 + parseInt(s.getAttribute("r") || "0", 10);
157
+ }
158
+ }
159
+ else {
160
+ const timescale = parseInt(segmentTemplate.getAttribute("timescale") || "1", 10);
161
+ const segDur = parseInt(segmentTemplate.getAttribute("duration") || "0", 10);
162
+ const totalDur = parsePeriodDuration(period, mpd);
163
+ if (segDur > 0 && totalDur > 0) {
164
+ count = Math.ceil((totalDur * timescale) / segDur);
165
+ }
166
+ }
167
+ if (count <= 0) {
168
+ // Couldn't enumerate — fall back to the bare BaseURL (some servers serve
169
+ // the whole file there) rather than failing outright.
170
+ return { multiplexed: true, sourceUrl: repBase };
171
+ }
172
+ const initUrl = initTpl ? resolve(repBase, fill(initTpl)) : null;
173
+ const mediaUrls = [];
174
+ for (let i = 0; i < count; i++) {
175
+ mediaUrls.push(resolve(repBase, fill(mediaTpl, startNumber + i)));
176
+ }
177
+ return { multiplexed: true, segments: { initUrl, mediaUrls } };
178
+ }
179
+ // No segment info — the BaseURL itself is the file (SegmentBase / plain).
180
+ return { multiplexed: true, sourceUrl: repBase };
181
+ }
182
+ /** Period duration in seconds (PTnHnMnS), falling back to MPD-level. */
183
+ function parsePeriodDuration(period, mpd) {
184
+ const iso = period.getAttribute("duration") ||
185
+ mpd.getAttribute("mediaPresentationDuration") ||
186
+ "";
187
+ const m = /PT(?:(\d+)H)?(?:(\d+)M)?(?:([\d.]+)S)?/.exec(iso);
188
+ if (!m)
189
+ return 0;
190
+ return (parseInt(m[1] || "0", 10) * 3600 +
191
+ parseInt(m[2] || "0", 10) * 60 +
192
+ parseFloat(m[3] || "0"));
193
+ }
194
+ //# sourceMappingURL=DashManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashManifest.js","sourceRoot":"","sources":["../../src/source/DashManifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { SourceAdapter } from "./SourceAdapter";
2
+ /**
3
+ * SourceAdapter for a MULTI-SEGMENT multiplexed DASH representation: an init
4
+ * segment followed by media segments that, concatenated, form one fragmented
5
+ * MP4 the FFmpeg demuxer reads natively. Used only when the muxed content is
6
+ * split across separate segment files (SegmentTemplate / SegmentList `media`);
7
+ * the common single-file case (SegmentBase / byte-range SegmentList) goes
8
+ * through HttpSource directly instead.
9
+ *
10
+ * Segments are fetched eagerly on first access and concatenated in memory. This
11
+ * keeps reads/seeks trivial (multiplexed multi-segment streams are rare and
12
+ * typically short demo clips); a streaming/windowed version can come later if a
13
+ * large one ever shows up.
14
+ */
15
+ export declare class DashSegmentSource implements SourceAdapter {
16
+ private urls;
17
+ private headers;
18
+ private buffer;
19
+ private size;
20
+ private position;
21
+ private loadPromise;
22
+ constructor(initUrl: string | null, mediaUrls: string[], headers?: Record<string, string>);
23
+ private ensureLoaded;
24
+ private loadAll;
25
+ getSize(): Promise<number>;
26
+ read(offset: number, length: number): Promise<ArrayBuffer>;
27
+ seek(offset: number): number;
28
+ getPosition(): number;
29
+ close(): void;
30
+ getKey(): string;
31
+ }
32
+ //# sourceMappingURL=DashSegmentSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashSegmentSource.d.ts","sourceRoot":"","sources":["../../src/source/DashSegmentSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKrD;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAA8B;gBAG/C,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;YAMxB,YAAY;YAMZ,OAAO;IAwBf,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAK1B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUhE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAK5B,WAAW,IAAI,MAAM;IAIrB,KAAK,IAAI,IAAI;IAKb,MAAM,IAAI,MAAM;CAGjB"}
@@ -0,0 +1,86 @@
1
+ import { Logger } from "../utils/Logger";
2
+ const TAG = "DashSegmentSource";
3
+ /**
4
+ * SourceAdapter for a MULTI-SEGMENT multiplexed DASH representation: an init
5
+ * segment followed by media segments that, concatenated, form one fragmented
6
+ * MP4 the FFmpeg demuxer reads natively. Used only when the muxed content is
7
+ * split across separate segment files (SegmentTemplate / SegmentList `media`);
8
+ * the common single-file case (SegmentBase / byte-range SegmentList) goes
9
+ * through HttpSource directly instead.
10
+ *
11
+ * Segments are fetched eagerly on first access and concatenated in memory. This
12
+ * keeps reads/seeks trivial (multiplexed multi-segment streams are rare and
13
+ * typically short demo clips); a streaming/windowed version can come later if a
14
+ * large one ever shows up.
15
+ */
16
+ export class DashSegmentSource {
17
+ urls;
18
+ headers;
19
+ buffer = null;
20
+ size = -1;
21
+ position = 0;
22
+ loadPromise = null;
23
+ constructor(initUrl, mediaUrls, headers = {}) {
24
+ this.urls = [initUrl, ...mediaUrls].filter((u) => !!u);
25
+ this.headers = headers;
26
+ }
27
+ async ensureLoaded() {
28
+ if (this.buffer)
29
+ return;
30
+ if (!this.loadPromise)
31
+ this.loadPromise = this.loadAll();
32
+ await this.loadPromise;
33
+ }
34
+ async loadAll() {
35
+ Logger.info(TAG, `Fetching ${this.urls.length} DASH segments`);
36
+ const parts = [];
37
+ let total = 0;
38
+ for (const url of this.urls) {
39
+ const res = await fetch(url, { headers: this.headers });
40
+ if (!res.ok) {
41
+ throw new Error(`DASH segment fetch failed (${res.status}): ${url}`);
42
+ }
43
+ const bytes = new Uint8Array(await res.arrayBuffer());
44
+ parts.push(bytes);
45
+ total += bytes.length;
46
+ }
47
+ const out = new Uint8Array(total);
48
+ let off = 0;
49
+ for (const p of parts) {
50
+ out.set(p, off);
51
+ off += p.length;
52
+ }
53
+ this.buffer = out;
54
+ this.size = total;
55
+ Logger.info(TAG, `Assembled ${(total / 1048576).toFixed(1)}MB from ${this.urls.length} segments`);
56
+ }
57
+ async getSize() {
58
+ await this.ensureLoaded();
59
+ return this.size;
60
+ }
61
+ async read(offset, length) {
62
+ await this.ensureLoaded();
63
+ const buf = this.buffer;
64
+ if (offset >= buf.length)
65
+ return new ArrayBuffer(0);
66
+ const end = Math.min(offset + length, buf.length);
67
+ const slice = buf.slice(offset, end); // fresh ArrayBuffer
68
+ this.position = end;
69
+ return slice.buffer;
70
+ }
71
+ seek(offset) {
72
+ this.position = offset;
73
+ return this.position;
74
+ }
75
+ getPosition() {
76
+ return this.position;
77
+ }
78
+ close() {
79
+ this.buffer = null;
80
+ this.loadPromise = null;
81
+ }
82
+ getKey() {
83
+ return this.urls[0] ?? "dash-segments";
84
+ }
85
+ }
86
+ //# sourceMappingURL=DashSegmentSource.js.map