diff --git a/packages/ffmpeg/src/worker.ts b/packages/ffmpeg/src/worker.ts index 1391589..f17a444 100644 --- a/packages/ffmpeg/src/worker.ts +++ b/packages/ffmpeg/src/worker.ts @@ -43,25 +43,22 @@ interface ImportedFFmpegCoreModuleFactory { let ffmpeg: FFmpegCoreModule; const load = async ({ - coreURL: _coreURL = CORE_URL, + coreURL: _coreURL, wasmURL: _wasmURL, workerURL: _workerURL, }: FFMessageLoadConfig): Promise => { const first = !ffmpeg; - const coreURL = _coreURL; - const wasmURL = _wasmURL ? _wasmURL : _coreURL.replace(/.js$/g, ".wasm"); - const workerURL = _workerURL - ? _workerURL - : _coreURL.replace(/.js$/g, ".worker.js"); try { + if (!_coreURL) _coreURL = CORE_URL; // when web worker type is `classic`. - importScripts(coreURL); + importScripts(_coreURL); } catch { + if (!_coreURL) _coreURL = CORE_URL.replace('/umd/', '/esm/'); // when web worker type is `module`. (self as WorkerGlobalScope).createFFmpegCore = ( (await import( - /* @vite-ignore */ coreURL + /* @vite-ignore */ _coreURL )) as ImportedFFmpegCoreModuleFactory ).default; @@ -70,6 +67,12 @@ const load = async ({ } } + const coreURL = _coreURL; + const wasmURL = _wasmURL ? _wasmURL : _coreURL.replace(/.js$/g, ".wasm"); + const workerURL = _workerURL + ? _workerURL + : _coreURL.replace(/.js$/g, ".worker.js"); + ffmpeg = await (self as WorkerGlobalScope).createFFmpegCore({ // Fix `Overload resolution failed.` when using multi-threaded ffmpeg-core. // Encoded wasmURL and workerURL in the URL as a hack to fix locateFile issue.