Skip to content

Commit ef54a7b

Browse files
committed
Major refactor to adapt new ffmpeg-core.js
1 parent c2693b1 commit ef54a7b

40 files changed

+226
-527
lines changed

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
"wait": "rimraf dist && wait-on http://localhost:3000/dist/ffmpeg.dev.js",
1515
"test": "npm-run-all -p -r start test:all",
1616
"test:all": "npm-run-all wait test:browser:ffmpeg test:node:all",
17-
"test:node": "NODE_OPTIONS=--experimental-worker nyc mocha --exit --bail --require ./scripts/test-helper.js",
17+
"test:node": "node --experimental-wasm-threads --experimental-wasm-bulk-memory node_modules/.bin/_mocha --exit --bail --require ./scripts/test-helper.js",
1818
"test:node:all": "npm run test:node -- ./tests/*.test.js",
19-
"test:browser": "mocha-headless-chrome -a incognito -a no-sandbox -a disable-setuid-sandbox -a disable-logging -t 300000",
19+
"test:browser": "mocha-headless-chrome -a allow-file-access-from-files -a incognito -a no-sandbox -a disable-setuid-sandbox -a disable-logging -t 300000",
2020
"test:browser:ffmpeg": "npm run test:browser -- -f ./tests/ffmpeg.test.html"
2121
},
2222
"browser": {
23-
"./src/worker/node/index.js": "./src/worker/browser/index.js"
23+
"./src/node/index.js": "./src/browser/index.js"
2424
},
2525
"repository": {
2626
"type": "git",
@@ -37,11 +37,11 @@
3737
"url": "https://github.com/ffmpegjs/ffmpeg.js/issues"
3838
},
3939
"engines": {
40-
"node": ">=10.5.0"
40+
"node": ">=12.16.1"
4141
},
4242
"homepage": "https://github.com/ffmpegjs/ffmpeg.js#readme",
4343
"dependencies": {
44-
"@ffmpeg/core": "^0.6.0",
44+
"@ffmpeg/core": "^0.7.0",
4545
"idb": "^4.0.5",
4646
"is-electron": "^2.2.0",
4747
"is-url": "^1.2.4",

scripts/webpack.config.dev.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,4 @@ module.exports = [
3232
library: 'FFmpeg',
3333
libraryTarget: 'umd',
3434
}),
35-
genConfig({
36-
entry: path.resolve(__dirname, '..', 'src', 'worker-script', 'browser', 'index.js'),
37-
filename: 'worker.dev.js',
38-
}),
3935
];

scripts/webpack.config.prod.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,4 @@ module.exports = [
2323
library: 'FFmpeg',
2424
libraryTarget: 'umd',
2525
}),
26-
genConfig({
27-
entry: path.resolve(__dirname, '..', 'src', 'worker-script', 'browser', 'index.js'),
28-
filename: 'worker.min.js',
29-
}),
3026
];

src/browser/defaultOptions.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const resolveURL = require('resolve-url');
2+
const { dependencies } = require('../../package.json');
3+
const defaultOptions = require('../constants/defaultOptions');
4+
5+
/*
6+
* Default options for browser worker
7+
*/
8+
module.exports = {
9+
...defaultOptions,
10+
corePath: (typeof process !== 'undefined' && process.env.FFMPEG_ENV === 'development')
11+
? resolveURL('/node_modules/@ffmpeg/core/ffmpeg-core.js')
12+
: `https://unpkg.com/@ffmpeg/core@v${dependencies['@ffmpeg/core'].substring(1)}/ffmpeg-core.js`,
13+
};
File renamed without changes.

src/browser/getModule.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const { log } = require('../utils/log');
2+
3+
module.exports = ({ corePath }) => new Promise((resolve) => {
4+
if (typeof window.Module === 'undefined') {
5+
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);
13+
};
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);
22+
}
23+
});
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
const defaultOptions = require('./defaultOptions');
2-
const spawnWorker = require('./spawnWorker');
3-
const onMessage = require('./onMessage');
2+
const getModule = require('./getModule');
43
const fetchFile = require('./fetchFile');
54

65
module.exports = {
76
defaultOptions,
8-
spawnWorker,
9-
onMessage,
7+
getModule,
108
fetchFile,
119
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module.exports = [
22
'./ffmpeg', // args[0] is always binary path
33
'-nostdin', // Disable interaction mode
4+
'-hide_banner', // Not to output banner
45
];

src/constants/defaultOptions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module.exports = {
2+
log: false,
23
logger: () => {},
34
progress: () => {},
45
};

0 commit comments

Comments
 (0)