diff --git a/packages/ffmpeg/src/classes.ts b/packages/ffmpeg/src/classes.ts index 74798d6..6af4bee 100644 --- a/packages/ffmpeg/src/classes.ts +++ b/packages/ffmpeg/src/classes.ts @@ -184,13 +184,19 @@ export class FFmpeg { * @returns `true` if ffmpeg core is loaded for the first time. */ public load = ( - config: FFMessageLoadConfig = {}, + { classWorkerURL, ...config }: FFMessageLoadConfig = {}, { signal }: FFMessageOptions = {} ): Promise => { if (!this.#worker) { - this.#worker = new Worker(new URL("./worker.js", import.meta.url), { - type: "module", - }); + this.#worker = classWorkerURL ? + new Worker(new URL(classWorkerURL, import.meta.url), { + type: "module", + }) : + // We need to duplicated the code here to enable webpack + // to bundle worekr.js here. + new Worker(new URL("./worker.js", import.meta.url), { + type: "module", + }); this.#registerHandlers(); } return this.#send( diff --git a/packages/ffmpeg/src/types.ts b/packages/ffmpeg/src/types.ts index d6cb78f..6082a6d 100644 --- a/packages/ffmpeg/src/types.ts +++ b/packages/ffmpeg/src/types.ts @@ -17,11 +17,19 @@ export interface FFMessageLoadConfig { */ wasmURL?: string; /** - * `ffmpeg-core.worker.js` URL. + * `ffmpeg-core.worker.js` URL. This worker is spawned when using multithread version of ffmpeg-core. * + * @ref: https://ffmpegwasm.netlify.app/docs/overview#architecture * @defaultValue `https://unpkg.com/@ffmpeg/core-mt@${CORE_VERSION}/dist/umd/ffmpeg-core.worker.js`; */ workerURL?: string; + /** + * `ffmpeg.worker.js` URL. This worker is spawned when FFmpeg.load() is called, it is an essential worker and usually you don't need to update this config. + * + * @ref: https://ffmpegwasm.netlify.app/docs/overview#architecture + * @defaultValue `./worker.js` + */ + classWorkerURL?: string; } export interface FFMessageExecData {