diff --git a/packages/engine/src/services/audioMixer.test.ts b/packages/engine/src/services/audioMixer.test.ts index 7efc53b92..9a1091e3e 100644 --- a/packages/engine/src/services/audioMixer.test.ts +++ b/packages/engine/src/services/audioMixer.test.ts @@ -80,6 +80,28 @@ describe("parseAudioElements strict literal timing", () => { ); }); +describe("parseAudioElements — children", () => { + it("discovers audio and audible-video tracks that use children", () => { + const tracks = parseAudioElements(` + + + `); + expect(tracks).toEqual([ + expect.objectContaining({ id: "bgm", src: "_remote_media/bgm.ogg", type: "audio" }), + expect.objectContaining({ + id: "rec-audio", + src: "_remote_media/rec.webm", + type: "video", + }), + ]); + }); +}); describe("processCompositionAudio", () => { const tempDirs: string[] = []; diff --git a/packages/engine/src/services/audioMixer.ts b/packages/engine/src/services/audioMixer.ts index c3ec1c34f..9841aefe7 100644 --- a/packages/engine/src/services/audioMixer.ts +++ b/packages/engine/src/services/audioMixer.ts @@ -20,7 +20,7 @@ import { import { DEFAULT_CONFIG, type EngineConfig } from "../config.js"; import { formatFfmpegError, runFfmpeg, type RunFfmpegResult } from "../utils/runFfmpeg.js"; import { unwrapTemplate } from "../utils/htmlTemplate.js"; -import { resolveProjectRelativeSrc } from "./videoFrameExtractor.js"; +import { resolveMediaElementSrc, resolveProjectRelativeSrc } from "./videoFrameExtractor.js"; import { resolveReferencedStart, type RefResolverEl } from "./referenceResolver.js"; import { isKnownInactiveTimelineWindow } from "./mediaTimelineWindow.js"; import type { @@ -512,7 +512,12 @@ export function parseAudioElements(html: string): AudioElement[] { //