Skip to content

Commit 8abb07e

Browse files
committed
Support type module use case
1 parent 83b22f8 commit 8abb07e

File tree

5 files changed

+23
-83
lines changed

5 files changed

+23
-83
lines changed

apps/browser/transcode.esm.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ <h3>Upload a video to transcode to mp4 (x264) and play!</h3>
2323
message.innerHTML = `${progress * 100} %`;
2424
});
2525
await ffmpeg.load({
26-
coreURL: "/packages/core/dist/umd/ffmpeg-core.js",
26+
coreURL: "/packages/core/dist/esm/ffmpeg-core.js",
2727
});
2828
}
2929
const { name } = files[0];
3030
await ffmpeg.writeFile(name, await fetchFile(files[0]));
3131
message.innerHTML = 'Start transcoding';
32-
await ffmpeg.exec('-i', name, 'output.mp4');
32+
await ffmpeg.exec(['-i', name, 'output.mp4']);
3333
message.innerHTML = 'Complete transcoding';
3434
const data = await ffmpeg.readFile('output.mp4');
3535

apps/browser/transcode.html

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,11 @@ <h3>Upload a video to transcode to mp4 (x264) and play!</h3>
1818
const message = document.getElementById('message');
1919
if (ffmpeg === null) {
2020
ffmpeg = new FFmpeg();
21-
ffmpeg.on(FFmpeg.DOWNLOAD, ({ url, total, received, done }) => {
22-
console.log(`downloading ${url}, progress: ${received / total * 100} %, done: ${done}`);
23-
});
24-
ffmpeg.on(FFmpeg.PROGRESS, ({ progress }) => {
25-
message.innerHTML = `${progress * 100} %`;
26-
});
27-
ffmpeg.on(FFmpeg.LOG, ({ message }) => {
28-
console.log(message);
21+
ffmpeg.on("log", ({ message }) => {
22+
console.log(message);
23+
})
24+
ffmpeg.on("progress", ({ progress }) => {
25+
message.innerHTML = `${progress * 100} %`;
2926
});
3027
await ffmpeg.load({
3128
coreURL: "/packages/core/dist/umd/ffmpeg-core.js",

apps/browser/transcode.worker.html

Lines changed: 0 additions & 48 deletions
This file was deleted.

apps/browser/transcode.worker.js

Lines changed: 0 additions & 24 deletions
This file was deleted.

packages/ffmpeg/src/worker.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ declare global {
3030
}
3131
}
3232

33+
interface ImportedFFmpegCoreModuleFactory {
34+
default: FFmpegCoreModuleFactory;
35+
}
36+
3337
let ffmpeg: FFmpegCoreModule;
3438

3539
const load = async ({
@@ -44,7 +48,18 @@ const load = async ({
4448
? _workerURL
4549
: _coreURL.replace(/.js$/g, ".worker.js");
4650

47-
importScripts(coreURL);
51+
try {
52+
// when web worker type is `classic`.
53+
importScripts(coreURL);
54+
} catch (e: unknown) {
55+
// when web worker type is `module`.
56+
if (e instanceof TypeError && e.toString().includes("Module scripts")) {
57+
(self as WorkerGlobalScope).createFFmpegCore = (
58+
(await import(coreURL)) as ImportedFFmpegCoreModuleFactory
59+
).default;
60+
} else throw e;
61+
}
62+
4863
ffmpeg = await (self as WorkerGlobalScope).createFFmpegCore({
4964
// Fix `Overload resolution failed.` when using multi-threaded ffmpeg-core.
5065
mainScriptUrlOrBlob: coreURL,

0 commit comments

Comments
 (0)