frameyard 0.1.0 → 0.3.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 +60 -2
- package/GLOSSARY.md +16 -0
- package/README.md +89 -51
- package/dist/assets/integrations.d.ts.map +1 -1
- package/dist/assets/integrations.js.map +1 -1
- package/dist/assets/process.d.ts.map +1 -1
- package/dist/assets/process.js +2 -2
- package/dist/assets/process.js.map +1 -1
- package/dist/assets/provenance.d.ts.map +1 -1
- package/dist/assets/provenance.js.map +1 -1
- package/dist/assets/transcribe.d.ts.map +1 -1
- package/dist/assets/transcribe.js +4 -1
- package/dist/assets/transcribe.js.map +1 -1
- package/dist/assets/tts.d.ts.map +1 -1
- package/dist/assets/tts.js +2 -4
- package/dist/assets/tts.js.map +1 -1
- package/dist/cli.js +19 -94
- package/dist/cli.js.map +1 -1
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +5 -6
- package/dist/contracts.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +27 -22
- package/dist/doctor.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- 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/preview/main.d.ts +2 -0
- package/dist/preview/main.d.ts.map +1 -1
- package/dist/preview/main.js +28 -3
- package/dist/preview/main.js.map +1 -1
- package/dist/renderer/audio.d.ts +5 -1
- package/dist/renderer/audio.d.ts.map +1 -1
- package/dist/renderer/audio.js +5 -2
- package/dist/renderer/audio.js.map +1 -1
- package/dist/renderer/browser.d.ts +1 -0
- package/dist/renderer/browser.d.ts.map +1 -1
- package/dist/renderer/browser.js +8 -2
- package/dist/renderer/browser.js.map +1 -1
- package/dist/renderer/ffmpeg.d.ts.map +1 -1
- package/dist/renderer/ffmpeg.js +3 -1
- package/dist/renderer/ffmpeg.js.map +1 -1
- package/dist/renderer/index.d.ts +5 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +144 -19
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer/transcripts.d.ts.map +1 -1
- package/dist/renderer/transcripts.js +1 -3
- package/dist/renderer/transcripts.js.map +1 -1
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +85 -9
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/media.d.ts +16 -0
- package/dist/runtime/media.d.ts.map +1 -0
- package/dist/runtime/media.js +307 -0
- package/dist/runtime/media.js.map +1 -0
- package/dist/scaffold.d.ts +3 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +179 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js.map +1 -1
- package/dist/transcript.d.ts.map +1 -1
- package/dist/transcript.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/adr/0003-render-browser-frames-offline.md +2 -0
- package/docs/adr/0005-keep-parallel-rendering-opt-in-and-frame-ordered.md +3 -0
- package/docs/adr/0006-seek-embedded-media-from-the-frame-clock.md +9 -0
- package/docs/v0.1-design.md +16 -12
- package/examples/demo/compositions/demo.js +2 -5
- package/package.json +13 -4
- package/skills/frameyard/README.md +35 -0
- package/skills/frameyard/SKILL.md +63 -0
- package/{skill → skills/frameyard}/references/audio-assets.md +3 -3
- package/{skill → skills/frameyard}/references/deterministic-authoring.md +32 -4
- package/{skill → skills/frameyard}/references/failure-recovery.md +6 -3
- package/{skill → skills/frameyard}/references/json-results.md +2 -1
- package/{skill → skills/frameyard}/references/subtitles-karaoke.md +3 -3
- package/{skill → skills/frameyard}/scripts/frameyard.mjs +2 -2
- package/skill/README.md +0 -29
- package/skill/SKILL.md +0 -57
package/dist/runtime/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { normalizeComposition, resolveAudioClips, resolveProps, resolveTranscriptClips, } from "../contracts.js";
|
|
2
2
|
import { FrameyardError, isFrameyardError } from "../errors.js";
|
|
3
3
|
import { frameToMilliseconds } from "./clock.js";
|
|
4
|
+
import { describeMediaAudio, prepareMedia, releaseMedia, settleMedia } from "./media.js";
|
|
4
5
|
export { frameToMilliseconds, frameToSeconds } from "./clock.js";
|
|
5
6
|
export { random } from "./random.js";
|
|
6
7
|
function isThenable(value) {
|
|
@@ -154,6 +155,14 @@ async function disposeAfterFailure(composition) {
|
|
|
154
155
|
// Cleanup after a failed mount or first update must not mask the failure.
|
|
155
156
|
}
|
|
156
157
|
}
|
|
158
|
+
function clearContainer(container) {
|
|
159
|
+
releaseMedia(container);
|
|
160
|
+
container.replaceChildren();
|
|
161
|
+
}
|
|
162
|
+
async function discardRuntime(composition, container) {
|
|
163
|
+
await disposeAfterFailure(composition);
|
|
164
|
+
clearContainer(container);
|
|
165
|
+
}
|
|
157
166
|
async function waitForMountedAssets(container) {
|
|
158
167
|
await document.fonts.ready;
|
|
159
168
|
const images = Array.from(container.querySelectorAll("img"));
|
|
@@ -165,7 +174,9 @@ async function waitForMountedAssets(container) {
|
|
|
165
174
|
await image.decode();
|
|
166
175
|
}
|
|
167
176
|
catch (error) {
|
|
168
|
-
throw new FrameyardError("ASSET_NOT_FOUND", `Could not load image asset "${image.currentSrc || image.src}".`, {
|
|
177
|
+
throw new FrameyardError("ASSET_NOT_FOUND", `Could not load image asset "${image.currentSrc || image.src}".`, {
|
|
178
|
+
cause: error,
|
|
179
|
+
});
|
|
169
180
|
}
|
|
170
181
|
}));
|
|
171
182
|
}
|
|
@@ -196,6 +207,7 @@ export async function createCompositionRuntime(options) {
|
|
|
196
207
|
const { container } = options;
|
|
197
208
|
const diagnostics = options.diagnostics;
|
|
198
209
|
let warnedTransition = false;
|
|
210
|
+
let embeddedAudioClips = Object.freeze([]);
|
|
199
211
|
const warnTransition = () => {
|
|
200
212
|
if (!diagnostics || warnedTransition) {
|
|
201
213
|
return;
|
|
@@ -213,20 +225,23 @@ export async function createCompositionRuntime(options) {
|
|
|
213
225
|
await withDiagnosticsAsync("Composition mount()", diagnostics, () => composition.mount({ container, props }));
|
|
214
226
|
}
|
|
215
227
|
catch (error) {
|
|
216
|
-
await
|
|
217
|
-
container.replaceChildren();
|
|
228
|
+
await discardRuntime(composition, container);
|
|
218
229
|
throw wrapCompositionError("mount", null, error);
|
|
219
230
|
}
|
|
220
231
|
try {
|
|
221
232
|
await waitForMountedAssets(container);
|
|
233
|
+
await prepareMedia(container);
|
|
222
234
|
}
|
|
223
235
|
catch (error) {
|
|
224
|
-
await
|
|
225
|
-
container.replaceChildren();
|
|
236
|
+
await discardRuntime(composition, container);
|
|
226
237
|
throw error;
|
|
227
238
|
}
|
|
239
|
+
embeddedAudioClips = describeMediaAudio(container);
|
|
228
240
|
let frame = 0;
|
|
229
241
|
let disposed = false;
|
|
242
|
+
let settleLoop = null;
|
|
243
|
+
let settleWaiters = [];
|
|
244
|
+
let settleFrame = null;
|
|
230
245
|
function seek(targetFrame) {
|
|
231
246
|
if (disposed) {
|
|
232
247
|
throw new FrameyardError("COMPOSITION_ERROR", "Cannot seek a disposed composition runtime.");
|
|
@@ -246,28 +261,89 @@ export async function createCompositionRuntime(options) {
|
|
|
246
261
|
}
|
|
247
262
|
frame = targetFrame;
|
|
248
263
|
}
|
|
264
|
+
function settle() {
|
|
265
|
+
if (disposed) {
|
|
266
|
+
return Promise.reject(new FrameyardError("COMPOSITION_ERROR", "Cannot settle a disposed composition runtime."));
|
|
267
|
+
}
|
|
268
|
+
const targetFrame = frame;
|
|
269
|
+
const promise = new Promise((resolve, reject) => {
|
|
270
|
+
settleWaiters.push({ resolve, reject });
|
|
271
|
+
});
|
|
272
|
+
settleFrame = targetFrame;
|
|
273
|
+
settleLoop ??= runSettleLoop();
|
|
274
|
+
return promise;
|
|
275
|
+
}
|
|
276
|
+
async function runSettleLoop() {
|
|
277
|
+
try {
|
|
278
|
+
while (settleWaiters.length > 0) {
|
|
279
|
+
const waiters = settleWaiters;
|
|
280
|
+
settleWaiters = [];
|
|
281
|
+
const targetFrame = settleFrame ?? frame;
|
|
282
|
+
settleFrame = null;
|
|
283
|
+
if (disposed) {
|
|
284
|
+
const error = new FrameyardError("COMPOSITION_ERROR", "Cannot settle a disposed composition runtime.");
|
|
285
|
+
for (const waiter of waiters) {
|
|
286
|
+
waiter.reject(error);
|
|
287
|
+
}
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
try {
|
|
291
|
+
await settleMedia(container, targetFrame, composition.fps);
|
|
292
|
+
if (disposed) {
|
|
293
|
+
const error = new FrameyardError("COMPOSITION_ERROR", "Cannot settle a disposed composition runtime.");
|
|
294
|
+
for (const waiter of waiters) {
|
|
295
|
+
waiter.reject(error);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
for (const waiter of waiters) {
|
|
300
|
+
waiter.resolve();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
for (const waiter of waiters) {
|
|
306
|
+
waiter.reject(error);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
finally {
|
|
312
|
+
settleLoop = null;
|
|
313
|
+
if (settleWaiters.length > 0) {
|
|
314
|
+
settleLoop = runSettleLoop();
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
249
318
|
try {
|
|
250
319
|
seek(0);
|
|
320
|
+
await settleMedia(container, 0, composition.fps);
|
|
251
321
|
}
|
|
252
322
|
catch (error) {
|
|
253
|
-
await
|
|
254
|
-
container.replaceChildren();
|
|
323
|
+
await discardRuntime(composition, container);
|
|
255
324
|
throw error;
|
|
256
325
|
}
|
|
257
326
|
return Object.freeze({
|
|
258
327
|
composition,
|
|
259
328
|
props,
|
|
260
329
|
audioClips,
|
|
330
|
+
embeddedAudioClips,
|
|
261
331
|
transcriptClips,
|
|
262
332
|
get frame() {
|
|
263
333
|
return frame;
|
|
264
334
|
},
|
|
265
335
|
seek,
|
|
336
|
+
settle,
|
|
266
337
|
async dispose() {
|
|
267
338
|
if (disposed) {
|
|
268
339
|
return;
|
|
269
340
|
}
|
|
270
341
|
disposed = true;
|
|
342
|
+
const stopped = new FrameyardError("COMPOSITION_ERROR", "Cannot settle a disposed composition runtime.");
|
|
343
|
+
for (const waiter of settleWaiters) {
|
|
344
|
+
waiter.reject(stopped);
|
|
345
|
+
}
|
|
346
|
+
settleWaiters = [];
|
|
271
347
|
try {
|
|
272
348
|
if (composition.dispose) {
|
|
273
349
|
const result = composition.dispose();
|
|
@@ -277,10 +353,10 @@ export async function createCompositionRuntime(options) {
|
|
|
277
353
|
}
|
|
278
354
|
}
|
|
279
355
|
catch (error) {
|
|
280
|
-
container
|
|
356
|
+
clearContainer(container);
|
|
281
357
|
throw wrapCompositionError("dispose", null, error);
|
|
282
358
|
}
|
|
283
|
-
container
|
|
359
|
+
clearContainer(container);
|
|
284
360
|
},
|
|
285
361
|
});
|
|
286
362
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ResolvedAudioClip } from "../contracts.js";
|
|
2
|
+
/** Converts a composition-relative media reference to a normalized project path. */
|
|
3
|
+
export declare function normalizeMediaSource(raw: string): string;
|
|
4
|
+
/** Loads every embedded video into memory before frame production begins. */
|
|
5
|
+
export declare function prepareMedia(container: HTMLElement): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Seeks every embedded video to the requested composition frame and waits for
|
|
8
|
+
* the browser to present the result. This is the asynchronous half of a seek;
|
|
9
|
+
* composition update() stays synchronous.
|
|
10
|
+
*/
|
|
11
|
+
export declare function settleMedia(container: HTMLElement, frame: number, fps: number): Promise<void>;
|
|
12
|
+
/** Describes the audio contributed by unmuted embedded videos for preview and FFmpeg. */
|
|
13
|
+
export declare function describeMediaAudio(container: HTMLElement): readonly ResolvedAudioClip[];
|
|
14
|
+
/** Releases object URLs and media resources owned by the runtime. */
|
|
15
|
+
export declare function releaseMedia(container: HTMLElement): void;
|
|
16
|
+
//# sourceMappingURL=media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/runtime/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAkDzD,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA8BxD;AA8HD,6EAA6E;AAC7E,wBAAsB,YAAY,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxE;AAsHD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnG;AAED,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,SAAS,iBAAiB,EAAE,CAwBvF;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAYzD"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { FrameyardError } from "../errors.js";
|
|
2
|
+
import { frameToSeconds } from "./clock.js";
|
|
3
|
+
const MEDIA_TIMEOUT_MS = 30_000;
|
|
4
|
+
const TIME_EPSILON = 0.0005;
|
|
5
|
+
const preparedMedia = new WeakMap();
|
|
6
|
+
const preparedStates = new Set();
|
|
7
|
+
const pendingPreparation = new WeakMap();
|
|
8
|
+
const VIDEO_MIME_TYPES = {
|
|
9
|
+
".mov": "video/quicktime",
|
|
10
|
+
".mp4": "video/mp4",
|
|
11
|
+
".m4v": "video/mp4",
|
|
12
|
+
".ogv": "video/ogg",
|
|
13
|
+
".webm": "video/webm",
|
|
14
|
+
};
|
|
15
|
+
function mediaSource(video) {
|
|
16
|
+
const direct = video.getAttribute("src");
|
|
17
|
+
if (direct !== null && direct.trim().length > 0) {
|
|
18
|
+
return direct.trim();
|
|
19
|
+
}
|
|
20
|
+
const source = video.querySelector("source[src]");
|
|
21
|
+
const nested = source?.getAttribute("src");
|
|
22
|
+
if (nested !== null && nested !== undefined && nested.trim().length > 0) {
|
|
23
|
+
return nested.trim();
|
|
24
|
+
}
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
27
|
+
/** Converts a composition-relative media reference to a normalized project path. */
|
|
28
|
+
export function normalizeMediaSource(raw) {
|
|
29
|
+
if (raw.length === 0) {
|
|
30
|
+
throw new FrameyardError("MEDIA_INVALID", "An embedded video must have a non-empty src attribute.");
|
|
31
|
+
}
|
|
32
|
+
if (/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(raw) || raw.startsWith("//") || raw.startsWith("\\")) {
|
|
33
|
+
throw new FrameyardError("MEDIA_INVALID", `Embedded video source must be a local project-relative file, not "${raw}".`);
|
|
34
|
+
}
|
|
35
|
+
let pathValue = raw.split(/[?#]/, 1)[0] ?? "";
|
|
36
|
+
pathValue = pathValue.replace(/\\/g, "/").replace(/^\/+/, "");
|
|
37
|
+
if (pathValue.startsWith("./")) {
|
|
38
|
+
pathValue = pathValue.slice(2);
|
|
39
|
+
}
|
|
40
|
+
if (pathValue.length === 0 || pathValue.split("/").includes("..") || pathValue.includes("\0")) {
|
|
41
|
+
throw new FrameyardError("MEDIA_INVALID", `Embedded video source must stay inside the project, not "${raw}".`);
|
|
42
|
+
}
|
|
43
|
+
let decoded;
|
|
44
|
+
try {
|
|
45
|
+
decoded = decodeURIComponent(pathValue);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw new FrameyardError("MEDIA_INVALID", `Embedded video source is not a valid URL path: "${raw}".`);
|
|
49
|
+
}
|
|
50
|
+
if (decoded.length === 0 || decoded.split("/").includes("..") || decoded.includes("\0")) {
|
|
51
|
+
throw new FrameyardError("MEDIA_INVALID", `Embedded video source must stay inside the project, not "${raw}".`);
|
|
52
|
+
}
|
|
53
|
+
return decoded;
|
|
54
|
+
}
|
|
55
|
+
function videoUrl(pathValue) {
|
|
56
|
+
return new URL(`/${pathValue}`, window.location.origin);
|
|
57
|
+
}
|
|
58
|
+
function waitForEvent(video, event, message, code = "MEDIA_INVALID") {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
let timer;
|
|
61
|
+
function finish() {
|
|
62
|
+
video.removeEventListener(event, onEvent);
|
|
63
|
+
video.removeEventListener("error", onError);
|
|
64
|
+
clearTimeout(timer);
|
|
65
|
+
}
|
|
66
|
+
function onEvent() {
|
|
67
|
+
finish();
|
|
68
|
+
resolve();
|
|
69
|
+
}
|
|
70
|
+
function onError() {
|
|
71
|
+
finish();
|
|
72
|
+
reject(new FrameyardError(code, `${message}${video.error?.message ? `: ${video.error.message}` : ""}`));
|
|
73
|
+
}
|
|
74
|
+
timer = setTimeout(() => {
|
|
75
|
+
finish();
|
|
76
|
+
reject(new FrameyardError(code, `${message} Timed out after ${MEDIA_TIMEOUT_MS / 1000}s.`));
|
|
77
|
+
}, MEDIA_TIMEOUT_MS);
|
|
78
|
+
video.addEventListener(event, onEvent, { once: true });
|
|
79
|
+
video.addEventListener("error", onError, { once: true });
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async function prepareVideo(video, owner) {
|
|
83
|
+
const raw = mediaSource(video);
|
|
84
|
+
const source = normalizeMediaSource(raw);
|
|
85
|
+
const spec = mediaSpec(video);
|
|
86
|
+
const existing = preparedMedia.get(video);
|
|
87
|
+
if (existing && existing.owner === owner && existing.source === source) {
|
|
88
|
+
return existing;
|
|
89
|
+
}
|
|
90
|
+
if (existing) {
|
|
91
|
+
preparedMedia.delete(video);
|
|
92
|
+
preparedStates.delete(existing);
|
|
93
|
+
URL.revokeObjectURL(existing.objectUrl);
|
|
94
|
+
}
|
|
95
|
+
let response;
|
|
96
|
+
try {
|
|
97
|
+
response = await fetch(videoUrl(source), { cache: "no-store" });
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
throw new FrameyardError("ASSET_NOT_FOUND", `Could not load embedded video asset "${source}".`, {
|
|
101
|
+
cause: error,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
if (!response.ok) {
|
|
105
|
+
throw new FrameyardError("ASSET_NOT_FOUND", `Could not load embedded video asset "${source}" (HTTP ${response.status}).`);
|
|
106
|
+
}
|
|
107
|
+
const blob = await response.blob();
|
|
108
|
+
if (blob.size === 0) {
|
|
109
|
+
throw new FrameyardError("MEDIA_INVALID", `Embedded video asset "${source}" is empty.`);
|
|
110
|
+
}
|
|
111
|
+
const extension = source.slice(source.lastIndexOf(".")).toLowerCase();
|
|
112
|
+
const type = blob.type || VIDEO_MIME_TYPES[extension] || "video/webm";
|
|
113
|
+
const videoBlob = blob.type === type ? blob : blob.slice(0, blob.size, type);
|
|
114
|
+
const objectUrl = URL.createObjectURL(videoBlob);
|
|
115
|
+
const authorMuted = video.muted;
|
|
116
|
+
for (const nested of Array.from(video.querySelectorAll("source"))) {
|
|
117
|
+
nested.remove();
|
|
118
|
+
}
|
|
119
|
+
const loaded = waitForEvent(video, "loadeddata", `Embedded video asset "${source}" could not be decoded.`);
|
|
120
|
+
video.preload = "auto";
|
|
121
|
+
video.playsInline = true;
|
|
122
|
+
video.pause();
|
|
123
|
+
video.muted = true;
|
|
124
|
+
video.src = objectUrl;
|
|
125
|
+
video.load();
|
|
126
|
+
try {
|
|
127
|
+
await loaded;
|
|
128
|
+
if (!Number.isFinite(video.duration) || video.duration <= 0 || video.seekable.length === 0) {
|
|
129
|
+
throw new FrameyardError("MEDIA_INVALID", `Embedded video asset "${source}" is not seekable.`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
URL.revokeObjectURL(objectUrl);
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
const state = { element: video, owner, source, objectUrl, spec, authorMuted };
|
|
137
|
+
preparedMedia.set(video, state);
|
|
138
|
+
preparedStates.add(state);
|
|
139
|
+
return state;
|
|
140
|
+
}
|
|
141
|
+
async function prepareOrGet(video, owner) {
|
|
142
|
+
const ready = preparedMedia.get(video);
|
|
143
|
+
if (ready && ready.owner === owner) {
|
|
144
|
+
return ready;
|
|
145
|
+
}
|
|
146
|
+
const pending = pendingPreparation.get(video);
|
|
147
|
+
if (pending) {
|
|
148
|
+
return pending;
|
|
149
|
+
}
|
|
150
|
+
const preparation = prepareVideo(video, owner);
|
|
151
|
+
pendingPreparation.set(video, preparation);
|
|
152
|
+
try {
|
|
153
|
+
return await preparation;
|
|
154
|
+
}
|
|
155
|
+
finally {
|
|
156
|
+
pendingPreparation.delete(video);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/** Loads every embedded video into memory before frame production begins. */
|
|
160
|
+
export async function prepareMedia(container) {
|
|
161
|
+
const videos = Array.from(container.querySelectorAll("video"));
|
|
162
|
+
await Promise.all(videos.map((video) => prepareOrGet(video, container)));
|
|
163
|
+
}
|
|
164
|
+
function integerAttribute(element, name, fallback) {
|
|
165
|
+
const raw = element.getAttribute(name);
|
|
166
|
+
if (raw === null || raw.trim().length === 0) {
|
|
167
|
+
return fallback;
|
|
168
|
+
}
|
|
169
|
+
const value = Number(raw);
|
|
170
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
171
|
+
throw new FrameyardError("MEDIA_INVALID", `Embedded video ${name} must be a non-negative integer.`);
|
|
172
|
+
}
|
|
173
|
+
return value;
|
|
174
|
+
}
|
|
175
|
+
function secondsAttribute(element, name, fallback, allowZero) {
|
|
176
|
+
const raw = element.getAttribute(name);
|
|
177
|
+
if (raw === null || raw.trim().length === 0) {
|
|
178
|
+
return fallback;
|
|
179
|
+
}
|
|
180
|
+
const value = Number(raw);
|
|
181
|
+
if (!Number.isFinite(value) || value < 0 || (!allowZero && value === 0)) {
|
|
182
|
+
throw new FrameyardError("MEDIA_INVALID", `Embedded video ${name} must be ${allowZero ? "a non-negative" : "a positive"} number of seconds.`);
|
|
183
|
+
}
|
|
184
|
+
return value;
|
|
185
|
+
}
|
|
186
|
+
function volumeAttribute(element) {
|
|
187
|
+
const raw = element.getAttribute("data-frameyard-volume");
|
|
188
|
+
if (raw === null || raw.trim().length === 0) {
|
|
189
|
+
return Math.max(0, Math.min(1, element.volume));
|
|
190
|
+
}
|
|
191
|
+
const value = Number(raw);
|
|
192
|
+
if (!Number.isFinite(value) || value < 0 || value > 1) {
|
|
193
|
+
throw new FrameyardError("MEDIA_INVALID", "Embedded video data-frameyard-volume must be between 0 and 1.");
|
|
194
|
+
}
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
197
|
+
function mediaSpec(element) {
|
|
198
|
+
const startFrame = integerAttribute(element, "data-frameyard-start", 0);
|
|
199
|
+
const trimStart = secondsAttribute(element, "data-frameyard-trim", 0, true);
|
|
200
|
+
const durationRaw = element.getAttribute("data-frameyard-duration");
|
|
201
|
+
const trimDuration = durationRaw === null || durationRaw.trim().length === 0
|
|
202
|
+
? undefined
|
|
203
|
+
: secondsAttribute(element, "data-frameyard-duration", 0, false);
|
|
204
|
+
const spec = {
|
|
205
|
+
startFrame,
|
|
206
|
+
trimStart,
|
|
207
|
+
volume: volumeAttribute(element),
|
|
208
|
+
};
|
|
209
|
+
if (trimDuration !== undefined) {
|
|
210
|
+
spec.trimDuration = trimDuration;
|
|
211
|
+
}
|
|
212
|
+
return spec;
|
|
213
|
+
}
|
|
214
|
+
function seekTarget(video, spec, frame, fps) {
|
|
215
|
+
const localSeconds = frameToSeconds(frame, fps) - spec.startFrame / fps;
|
|
216
|
+
const usedSeconds = spec.trimDuration === undefined
|
|
217
|
+
? Math.max(0, localSeconds)
|
|
218
|
+
: Math.min(spec.trimDuration, Math.max(0, localSeconds));
|
|
219
|
+
const target = spec.trimStart + usedSeconds;
|
|
220
|
+
const duration = Number.isFinite(video.duration) ? Math.max(0, video.duration) : target;
|
|
221
|
+
return Math.min(target, Math.max(0, duration - TIME_EPSILON));
|
|
222
|
+
}
|
|
223
|
+
async function seekVideo(video, frame, fps) {
|
|
224
|
+
const state = preparedMedia.get(video);
|
|
225
|
+
if (!state) {
|
|
226
|
+
throw new FrameyardError("MEDIA_INVALID", "Embedded video elements must be created in mount(); videos added during update() cannot be prepared without network access.");
|
|
227
|
+
}
|
|
228
|
+
if (!video.paused) {
|
|
229
|
+
video.pause();
|
|
230
|
+
}
|
|
231
|
+
if (video.readyState < HTMLMediaElement.HAVE_CURRENT_DATA) {
|
|
232
|
+
await waitForEvent(video, "loadeddata", "Embedded video is not ready for frame production.");
|
|
233
|
+
}
|
|
234
|
+
const target = seekTarget(video, state.spec, frame, fps);
|
|
235
|
+
if (video.seeking) {
|
|
236
|
+
await waitForEvent(video, "seeked", "Embedded video could not finish an earlier seek.", "MEDIA_SEEK_FAILED");
|
|
237
|
+
}
|
|
238
|
+
if (!video.seeking && Math.abs(video.currentTime - target) < TIME_EPSILON) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const seeked = waitForEvent(video, "seeked", "Embedded video could not seek to the requested frame.", "MEDIA_SEEK_FAILED");
|
|
242
|
+
try {
|
|
243
|
+
video.currentTime = target;
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
throw new FrameyardError("MEDIA_SEEK_FAILED", `Embedded video could not seek to ${target.toFixed(3)}s: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
247
|
+
}
|
|
248
|
+
await seeked;
|
|
249
|
+
}
|
|
250
|
+
async function nextPaint() {
|
|
251
|
+
await new Promise((resolve) => {
|
|
252
|
+
requestAnimationFrame(() => requestAnimationFrame(() => resolve()));
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Seeks every embedded video to the requested composition frame and waits for
|
|
257
|
+
* the browser to present the result. This is the asynchronous half of a seek;
|
|
258
|
+
* composition update() stays synchronous.
|
|
259
|
+
*/
|
|
260
|
+
export async function settleMedia(container, frame, fps) {
|
|
261
|
+
const videos = Array.from(container.querySelectorAll("video"));
|
|
262
|
+
if (videos.length === 0) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
await Promise.all(videos.map((video) => seekVideo(video, frame, fps)));
|
|
266
|
+
await nextPaint();
|
|
267
|
+
}
|
|
268
|
+
/** Describes the audio contributed by unmuted embedded videos for preview and FFmpeg. */
|
|
269
|
+
export function describeMediaAudio(container) {
|
|
270
|
+
const clips = [];
|
|
271
|
+
for (const video of Array.from(container.querySelectorAll("video"))) {
|
|
272
|
+
const state = preparedMedia.get(video);
|
|
273
|
+
if (!state || state.authorMuted || video.getAttribute("data-frameyard-audio") === "off") {
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
const spec = state.spec;
|
|
277
|
+
if (spec.volume === 0) {
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
const clip = {
|
|
281
|
+
src: state.source,
|
|
282
|
+
startFrame: spec.startFrame,
|
|
283
|
+
trimStart: spec.trimStart,
|
|
284
|
+
volume: spec.volume,
|
|
285
|
+
};
|
|
286
|
+
if (spec.trimDuration !== undefined) {
|
|
287
|
+
clip.trimDuration = spec.trimDuration;
|
|
288
|
+
}
|
|
289
|
+
clips.push(Object.freeze(clip));
|
|
290
|
+
}
|
|
291
|
+
return Object.freeze(clips);
|
|
292
|
+
}
|
|
293
|
+
/** Releases object URLs and media resources owned by the runtime. */
|
|
294
|
+
export function releaseMedia(container) {
|
|
295
|
+
for (const state of Array.from(preparedStates)) {
|
|
296
|
+
if (state.owner !== container) {
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
preparedStates.delete(state);
|
|
300
|
+
preparedMedia.delete(state.element);
|
|
301
|
+
state.element.pause();
|
|
302
|
+
URL.revokeObjectURL(state.objectUrl);
|
|
303
|
+
state.element.removeAttribute("src");
|
|
304
|
+
state.element.load();
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/runtime/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAiKA,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBzE;AAED,eAAO,MAAM,aAAa,UAKzB,CAAC"}
|