/** * Audio Mixer Service * * Processes and mixes audio tracks using FFmpeg. */ import { existsSync, mkdirSync, rmSync } from "fs"; import { join, dirname } from "path"; import { parseHTML } from "linkedom"; import { extractAudioMetadata } from "../utils/ffprobe.js"; import { downloadToTemp, isHttpUrl } from "../utils/urlDownloader.js"; import { DEFAULT_CONFIG, type EngineConfig } from "../config.js"; import { runFfmpeg } from "../utils/runFfmpeg.js"; import type { AudioElement, AudioTrack, MixResult } from "./audioMixer.types.js"; export type { AudioElement, AudioTrack, MixResult } from "./audioMixer.types.js"; interface ExtractResult { success: boolean; outputPath: string; durationMs: number; error?: string; } export function parseAudioElements(html: string): AudioElement[] { const elements: AudioElement[] = []; const { document } = parseHTML(html); // Parse