FFmpeg WASM
Selbst gehosteter Core, erster Ladevorgang, SharedArrayBuffer und Lizenzen.
Die Audio-/Video-Engine ist kein auf dem Server installiertes FFmpeg-Programm. Sie ist ein WebAssembly-Build, der im Browser geladen und vom selben Ursprung bereitgestellt wird.
Dateien
Nach npm run build wird der Core nach dist/ffmpeg/ kopiert:
/ffmpeg/ffmpeg-core.js/ffmpeg/ffmpeg-core.wasm(etwa 32 MB)
ffmpegEngine.ts lädt diese URLs über toBlobURL mit einem Timeout von 120 Sekunden. Beobachtete Meldung: „FFmpeg-Engine bereit (lokale Kopie, ein Thread).“
Warum COOP/COEP erforderlich ist
FFmpeg.wasm benötigt SharedArrayBuffer. Browser stellen es nur bereit, wenn die Seite ursprungsübergreifend isoliert ist (COOP same-origin + COEP require-corp). Vite-Entwicklung, Vorschau, das Nginx-Setup in Docker und die Vercel-Demo setzen diese Header. Entfernt ein Proxy sie, fällt nur die Medien-Engine aus.
Warteschlange
Es gibt eine Instanz und eine sequenzielle Job-Warteschlange. Bildkonvertierungen über Canvas verwenden diese Instanz nicht.
Lizenzen
SwissKnife steht unter der MIT-Lizenz. Laut Dokumentation von ffmpeg.wasm enthält der gebündelte Core x264. Prüfe NOTICE.md, bevor du die Anwendung mit der WASM-Datei weitergibst.
Öffentliche Referenzen:
Gehe nicht davon aus, dass die MIT-Lizenz des Repositorys FFmpeg oder x264 abdeckt.