Skip to content

Commit 235bf3d

Browse files
committed
Fix worker script origin issue
1 parent 0bd6fe1 commit 235bf3d

File tree

3 files changed

+24
-19
lines changed

3 files changed

+24
-19
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ $ node --experimental-wasm-threads --experimental-wasm-bulk-memory transcode.js
6666
Or, using a script tag in the browser (only works in Chrome):
6767

6868
```html
69-
<script src="https://unpkg.com/@ffmpeg/[email protected].0/dist/ffmpeg.min.js"></script>
69+
<script src="https://unpkg.com/@ffmpeg/[email protected].1/dist/ffmpeg.min.js"></script>
7070
<script>
7171
const { createFFmpeg } = FFmpeg;
7272
...

src/browser/getModule.js

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
const { log } = require('../utils/log');
22

3-
module.exports = ({ corePath }) => new Promise((resolve) => {
3+
module.exports = async ({ corePath }) => {
44
if (typeof window.Module === 'undefined') {
5+
log('info', 'fetch ffmpeg-core.worker.js script');
6+
const workerBlob = await (await fetch(corePath.replace('ffmpeg-core.js', 'ffmpeg-core.worker.js'))).blob();
7+
window.FFMPEG_CORE_WORKER_SCRIPT = URL.createObjectURL(workerBlob);
8+
log('info', `worker object URL=${window.FFMPEG_CORE_WORKER_SCRIPT}`);
59
log('info', `download ffmpeg-core script (~25 MB) from ${corePath}`);
6-
const script = document.createElement('script');
7-
const eventHandler = () => {
8-
script.removeEventListener('load', eventHandler);
9-
log('info', 'initialize ffmpeg-core');
10-
window.Module.onRuntimeInitialized = () => {
11-
log('info', 'ffmpeg-core initialized');
12-
resolve(window.Module);
10+
return new Promise((resolve) => {
11+
const script = document.createElement('script');
12+
const eventHandler = () => {
13+
script.removeEventListener('load', eventHandler);
14+
log('info', 'initialize ffmpeg-core');
15+
window.Module.onRuntimeInitialized = () => {
16+
log('info', 'ffmpeg-core initialized');
17+
resolve(window.Module);
18+
};
1319
};
14-
};
15-
script.src = corePath;
16-
script.type = 'text/javascript';
17-
script.addEventListener('load', eventHandler);
18-
document.getElementsByTagName('head')[0].appendChild(script);
19-
} else {
20-
log('info', 'ffmpeg-core is loaded already');
21-
resolve(window.Module);
20+
script.src = corePath;
21+
script.type = 'text/javascript';
22+
script.addEventListener('load', eventHandler);
23+
document.getElementsByTagName('head')[0].appendChild(script);
24+
});
2225
}
23-
});
26+
log('info', 'ffmpeg-core is loaded already');
27+
return Promise.resolve(window.Module);
28+
};

tests/constants.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const TIMEOUT = 60000;
22
const BASE_URL = 'http://localhost:3000/tests/assets';
33
const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';
44
const OPTIONS = {
5-
corePath: '../node_modules/@ffmpeg/core/ffmpeg-core.js',
5+
corePath: 'http://localhost:3000/node_modules/@ffmpeg/core/ffmpeg-core.js',
66
};
77

88
if (typeof module !== 'undefined') {

0 commit comments

Comments
 (0)