From d04a7a95a371b8f9ddfa0556106414a97b0df1ab Mon Sep 17 00:00:00 2001 From: seminelee <747191197@qq.com> Date: Wed, 28 Jul 2021 20:44:04 +0800 Subject: [PATCH 01/30] U createFFmpeg.js --- src/createFFmpeg.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/createFFmpeg.js b/src/createFFmpeg.js index c5425ce..84d476c 100644 --- a/src/createFFmpeg.js +++ b/src/createFFmpeg.js @@ -88,7 +88,8 @@ module.exports = (_options = {}) => { return prefix + path; }, }); - ffmpeg = Core.cwrap('proxy_main', 'number', ['number', 'number']); + const mainName = options.pthread === 0 ? '_main' : 'proxy_main'; + ffmpeg = Core.cwrap(mainName, 'number', ['number', 'number']); log('info', 'ffmpeg-core loaded'); } else { throw Error('ffmpeg.wasm was loaded, you should not load it again, use ffmpeg.isLoaded() to check next time.'); From 0ab43d01d7e91acb44db3c7cb4939aa5dbfb5f84 Mon Sep 17 00:00:00 2001 From: seminelee <747191197@qq.com> Date: Thu, 29 Jul 2021 18:11:28 +0800 Subject: [PATCH 02/30] A mainName --- src/createFFmpeg.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/createFFmpeg.js b/src/createFFmpeg.js index 84d476c..a1f1f8c 100644 --- a/src/createFFmpeg.js +++ b/src/createFFmpeg.js @@ -88,8 +88,7 @@ module.exports = (_options = {}) => { return prefix + path; }, }); - const mainName = options.pthread === 0 ? '_main' : 'proxy_main'; - ffmpeg = Core.cwrap(mainName, 'number', ['number', 'number']); + ffmpeg = Core.cwrap(options.mainName || 'proxy_main', 'number', ['number', 'number']); log('info', 'ffmpeg-core loaded'); } else { throw Error('ffmpeg.wasm was loaded, you should not load it again, use ffmpeg.isLoaded() to check next time.'); From 8fc711d73928ccca78518702cfdd3736030e86d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Aug 2021 14:50:02 +0000 Subject: [PATCH 03/30] Bump path-parse from 1.0.6 to 1.0.7 Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) --- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66855fd..a9a7809 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5646,9 +5646,9 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-to-regexp": { From 846285c136b57fe857c1e3bc430ca10aa89c916c Mon Sep 17 00:00:00 2001 From: seminelee <747191197@qq.com> Date: Tue, 17 Aug 2021 20:12:45 +0800 Subject: [PATCH 04/30] catch exit error --- src/createFFmpeg.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/createFFmpeg.js b/src/createFFmpeg.js index a1f1f8c..cbf5d9f 100644 --- a/src/createFFmpeg.js +++ b/src/createFFmpeg.js @@ -178,7 +178,11 @@ module.exports = (_options = {}) => { throw NO_LOAD; } else { running = false; - Core.exit(1); + try { + Core.exit(1); + } catch(e) { + console.log('catch core exit error', e); + } Core = null; ffmpeg = null; runResolve = null; From 256945282b451fe77e145b7c9295540541fa892c Mon Sep 17 00:00:00 2001 From: Sway Date: Fri, 29 Oct 2021 18:21:52 +0800 Subject: [PATCH 05/30] Fix ``exit`` method bug --- src/createFFmpeg.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/createFFmpeg.js b/src/createFFmpeg.js index c5425ce..3a80a8e 100644 --- a/src/createFFmpeg.js +++ b/src/createFFmpeg.js @@ -178,10 +178,15 @@ module.exports = (_options = {}) => { throw NO_LOAD; } else { running = false; - Core.exit(1); - Core = null; - ffmpeg = null; - runResolve = null; + try { + Core.exit(1); + } catch (e) { + log(e.message); + } finally { + Core = null; + ffmpeg = null; + runResolve = null; + } } }; From 84b0687dc845fba30202bb2933a61b5895bfba8b Mon Sep 17 00:00:00 2001 From: Zhang Zhi Date: Tue, 2 Nov 2021 12:30:27 +0800 Subject: [PATCH 06/30] Update typings --- src/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.d.ts b/src/index.d.ts index 5d0b749..8454042 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -1,5 +1,5 @@ export const FS: { - writeFile: (fileName: string, binaryData: Uint8Array) => void, + writeFile: (fileName: string, binaryData: Uint8Array | string) => void, readFile: (fileName: string) => Uint8Array, unlink: (fileName: string) => void, } From b529543042bb88d987f294538a5ed8b0b20be717 Mon Sep 17 00:00:00 2001 From: Guofeng Lin Date: Thu, 25 Nov 2021 11:40:44 +0800 Subject: [PATCH 07/30] Add FS readdir types --- src/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.d.ts b/src/index.d.ts index 5d0b749..e2471d3 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -1,6 +1,7 @@ export const FS: { writeFile: (fileName: string, binaryData: Uint8Array) => void, readFile: (fileName: string) => Uint8Array, + readdir: (pathName: string) => string[], unlink: (fileName: string) => void, } From 6f17936d95dc1a6c50634ca4e3c16029ba7a00d7 Mon Sep 17 00:00:00 2001 From: Carlos Rodrigues Date: Thu, 6 Jan 2022 12:15:15 +0000 Subject: [PATCH 08/30] fix: Cancel run promise if the exit() is called --- src/createFFmpeg.js | 9 ++++++++- tests/ffmpeg.test.js | 10 ++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/createFFmpeg.js b/src/createFFmpeg.js index c5425ce..836cc85 100644 --- a/src/createFFmpeg.js +++ b/src/createFFmpeg.js @@ -21,12 +21,14 @@ module.exports = (_options = {}) => { let Core = null; let ffmpeg = null; let runResolve = null; + let runReject = null; let running = false; let progress = optProgress; const detectCompletion = (message) => { if (message === 'FFMPEG_END' && runResolve !== null) { runResolve(); runResolve = null; + runReject = null; running = false; } }; @@ -126,9 +128,10 @@ module.exports = (_options = {}) => { throw Error('ffmpeg.wasm can only run one command at a time'); } else { running = true; - return new Promise((resolve) => { + return new Promise((resolve, reject) => { const args = [...defaultArgs, ..._args].filter((s) => s.length !== 0); runResolve = resolve; + runReject = reject ffmpeg(...parseArgs(Core, args)); }); } @@ -177,6 +180,10 @@ module.exports = (_options = {}) => { if (Core === null) { throw NO_LOAD; } else { + // if there's any pending runs, reject them + if(runReject) { + runReject('ffmpeg has exited') + } running = false; Core.exit(1); Core = null; diff --git a/tests/ffmpeg.test.js b/tests/ffmpeg.test.js index 2a434cd..270ad3d 100644 --- a/tests/ffmpeg.test.js +++ b/tests/ffmpeg.test.js @@ -48,6 +48,16 @@ describe('run()', () => { } }, 500); }).timeout(TIMEOUT); + + it('should terminate the run if exit is called', async () => { + const ffmpeg = createFFmpeg(OPTIONS); + await ffmpeg.load(); + + ffmpeg.run('-h').catch(e=> { + expect(e).to.be.equal('ffmpeg has exited') + }); + expect(ffmpeg.exit()).to.throw(); + }).timeout(TIMEOUT); }); describe('FS()', () => { From 8229d3efd0f1fbf1b1853fae239b651f027bd792 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Feb 2022 02:04:44 +0000 Subject: [PATCH 09/30] Bump pathval from 1.1.0 to 1.1.1 Bumps [pathval](https://github.com/chaijs/pathval) from 1.1.0 to 1.1.1. - [Release notes](https://github.com/chaijs/pathval/releases) - [Changelog](https://github.com/chaijs/pathval/blob/master/CHANGELOG.md) - [Commits](https://github.com/chaijs/pathval/compare/v1.1.0...v1.1.1) --- updated-dependencies: - dependency-name: pathval dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66855fd..85460f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5675,9 +5675,9 @@ } }, "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, "pend": { From 53f7a98a049488a462b38d6cbae240939bf23e70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 12 Feb 2022 16:17:00 +0000 Subject: [PATCH 10/30] Bump ajv from 6.10.2 to 6.12.6 Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.10.2 to 6.12.6. - [Release notes](https://github.com/ajv-validator/ajv/releases) - [Commits](https://github.com/ajv-validator/ajv/compare/v6.10.2...v6.12.6) --- updated-dependencies: - dependency-name: ajv dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 97 +++++++++-------------------------------------- 1 file changed, 17 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66855fd..4c1ee5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2035,23 +2035,10 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "globals": { "version": "12.4.0", @@ -2396,15 +2383,23 @@ } }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "dependencies": { + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + } } }, "ajv-keywords": { @@ -3863,12 +3858,6 @@ } } }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -6114,23 +6103,10 @@ "ajv-keywords": "^3.4.1" }, "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "fast-deep-equal": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" } } }, @@ -6670,18 +6646,6 @@ "terser": "^5.3.8" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -6691,8 +6655,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "p-limit": { "version": "3.0.2", @@ -6956,18 +6919,6 @@ "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", "dev": true }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -6977,8 +6928,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "find-up": { "version": "4.1.0", @@ -7105,18 +7055,6 @@ "schema-utils": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -7126,8 +7064,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "mime-db": { "version": "1.44.0", From 2d0580464fd425919e24deb6947e779eff3f6839 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Feb 2022 20:51:28 +0000 Subject: [PATCH 11/30] Bump follow-redirects from 1.14.0 to 1.14.8 Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.0 to 1.14.8. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.0...v1.14.8) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66855fd..ee6daf8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4038,9 +4038,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", - "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==", + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true }, "forwarded": { From 9811adb5e40b7c17de280ddd3d3cdba40069ffec Mon Sep 17 00:00:00 2001 From: Duncan Beevers Date: Wed, 23 Feb 2022 12:51:22 -0800 Subject: [PATCH 12/30] refactor: Remove unused webpack import --- scripts/webpack.config.dev.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/webpack.config.dev.js b/scripts/webpack.config.dev.js index b630863..2bfd2d0 100644 --- a/scripts/webpack.config.dev.js +++ b/scripts/webpack.config.dev.js @@ -1,5 +1,4 @@ const path = require('path'); -const webpack = require('webpack'); const common = require('./webpack.config.common'); const genConfig = ({ From fbedfb064c5598a0c6aa3ccd27b9c3c2d2044f76 Mon Sep 17 00:00:00 2001 From: Duncan Beevers Date: Wed, 23 Feb 2022 14:13:34 -0800 Subject: [PATCH 13/30] build: Remove --experimental-wasm-bulk-memory flag The --experimental-wasm-bulk-memory is no longer supported by Chrome --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b4f31b2..365f995 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "wait": "rimraf dist && wait-on http://localhost:3000/dist/ffmpeg.dev.js", "test": "npm-run-all -p -r start test:all", "test:all": "npm-run-all wait test:browser:ffmpeg test:node:all", - "test:node": "node --experimental-wasm-threads --experimental-wasm-bulk-memory node_modules/.bin/_mocha --exit --bail --require ./scripts/test-helper.js", + "test:node": "node --experimental-wasm-threads node_modules/.bin/_mocha --exit --bail --require ./scripts/test-helper.js", "test:node:all": "npm run test:node -- ./tests/*.test.js", "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", "test:browser:ffmpeg": "npm run test:browser -- -f ./tests/ffmpeg.test.html" From 61fcd255e0568b8101eb535b5b4b56800bc2c9b8 Mon Sep 17 00:00:00 2001 From: Duncan Beevers Date: Wed, 23 Feb 2022 15:23:26 -0800 Subject: [PATCH 14/30] fixup! build: Remove --experimental-wasm-bulk-memory flag --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 27e05f8..ad0d4db 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ $ npm install @ffmpeg/ffmpeg @ffmpeg/core > As we are using the latest experimental features, you need to add few flags to run in Node.js ``` -$ node --experimental-wasm-threads --experimental-wasm-bulk-memory transcode.js +$ node --experimental-wasm-threads transcode.js ``` **Browser** From fd584309b96646d3096557f9278849b793d6c5c2 Mon Sep 17 00:00:00 2001 From: Duncan Beevers Date: Wed, 23 Feb 2022 15:24:34 -0800 Subject: [PATCH 15/30] fixup! build: Remove --experimental-wasm-bulk-memory flag --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad0d4db..f9844c4 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Try it: [https://ffmpegwasm.netlify.app](https://ffmpegwasm.netlify.app#demo) $ npm install @ffmpeg/ffmpeg @ffmpeg/core ``` -> As we are using the latest experimental features, you need to add few flags to run in Node.js +> As we are using experimental features, you need to add flags to run in Node.js ``` $ node --experimental-wasm-threads transcode.js From 5204a89a0fbbb38b993c4a15bcad48aa57adebb0 Mon Sep 17 00:00:00 2001 From: rosenrose Date: Thu, 24 Feb 2022 16:29:37 +0900 Subject: [PATCH 16/30] Fix overwriting variables when running multiple instances. --- src/createFFmpeg.js | 43 +++++++++++++++++++++++++++++++++----- src/utils/log.js | 24 --------------------- src/utils/parseProgress.js | 28 ------------------------- 3 files changed, 38 insertions(+), 57 deletions(-) delete mode 100644 src/utils/log.js delete mode 100644 src/utils/parseProgress.js diff --git a/src/createFFmpeg.js b/src/createFFmpeg.js index c5425ce..f53d090 100644 --- a/src/createFFmpeg.js +++ b/src/createFFmpeg.js @@ -1,6 +1,4 @@ const { defaultArgs, baseOptions } = require('./config'); -const { setLogging, setCustomLogger, log } = require('./utils/log'); -const parseProgress = require('./utils/parseProgress'); const parseArgs = require('./utils/parseArgs'); const { defaultOptions, getCreateFFmpegCore } = require('./node'); const { version } = require('../package.json'); @@ -22,7 +20,11 @@ module.exports = (_options = {}) => { let ffmpeg = null; let runResolve = null; let running = false; + let customLogger = () => {}; let progress = optProgress; + let duration = 0; + let ratio = 0; + const detectCompletion = (message) => { if (message === 'FFMPEG_END' && runResolve !== null) { runResolve(); @@ -30,6 +32,36 @@ module.exports = (_options = {}) => { running = false; } }; + const log = (type, message) => { + customLogger({ type, message }); + if (logging) { + console.log(`[${type}] ${message}`); + } + }; + const ts2sec = (ts) => { + const [h, m, s] = ts.split(':'); + return (parseFloat(h) * 60 * 60) + (parseFloat(m) * 60) + parseFloat(s); + }; + const parseProgress = (message, progress) => { + if (typeof message === 'string') { + if (message.startsWith(' Duration')) { + const ts = message.split(', ')[0].split(': ')[1]; + const d = ts2sec(ts); + progress({ duration: d, ratio }); + if (duration === 0 || duration > d) { + duration = d; + } + } else if (message.startsWith('frame') || message.startsWith('size')) { + const ts = message.split('time=')[1].split(' ')[0]; + const t = ts2sec(ts); + ratio = t / duration; + progress({ ratio, time: t }); + } else if (message.startsWith('video:')) { + progress({ ratio: 1 }); + duration = 0; + } + } + }; const parseMessage = ({ type, message }) => { log(type, message); parseProgress(message, progress); @@ -190,11 +222,12 @@ module.exports = (_options = {}) => { }; const setLogger = (_logger) => { - setCustomLogger(_logger); + customLogger = _logger; }; - setLogging(logging); - setCustomLogger(logger); + const setLogging = (_logging) => { + logging = _logging; + }; log('info', `use ffmpeg.wasm v${version}`); diff --git a/src/utils/log.js b/src/utils/log.js deleted file mode 100644 index bb2f0fb..0000000 --- a/src/utils/log.js +++ /dev/null @@ -1,24 +0,0 @@ -let logging = false; -let customLogger = () => {}; - -const setLogging = (_logging) => { - logging = _logging; -}; - -const setCustomLogger = (logger) => { - customLogger = logger; -}; - -const log = (type, message) => { - customLogger({ type, message }); - if (logging) { - console.log(`[${type}] ${message}`); - } -}; - -module.exports = { - logging, - setLogging, - setCustomLogger, - log, -}; diff --git a/src/utils/parseProgress.js b/src/utils/parseProgress.js deleted file mode 100644 index dc1658a..0000000 --- a/src/utils/parseProgress.js +++ /dev/null @@ -1,28 +0,0 @@ -let duration = 0; -let ratio = 0; - -const ts2sec = (ts) => { - const [h, m, s] = ts.split(':'); - return (parseFloat(h) * 60 * 60) + (parseFloat(m) * 60) + parseFloat(s); -}; - -module.exports = (message, progress) => { - if (typeof message === 'string') { - if (message.startsWith(' Duration')) { - const ts = message.split(', ')[0].split(': ')[1]; - const d = ts2sec(ts); - progress({ duration: d, ratio }); - if (duration === 0 || duration > d) { - duration = d; - } - } else if (message.startsWith('frame') || message.startsWith('size')) { - const ts = message.split('time=')[1].split(' ')[0]; - const t = ts2sec(ts); - ratio = t / duration; - progress({ ratio, time: t }); - } else if (message.startsWith('video:')) { - progress({ ratio: 1 }); - duration = 0; - } - } -}; From c395570cb08cda0dfd5d034abb25de2c6051abd3 Mon Sep 17 00:00:00 2001 From: rosenrose Date: Thu, 24 Feb 2022 17:00:28 +0900 Subject: [PATCH 17/30] dont' delete files --- src/utils/log.js | 24 ++++++++++++++++++++++++ src/utils/parseProgress.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/utils/log.js create mode 100644 src/utils/parseProgress.js diff --git a/src/utils/log.js b/src/utils/log.js new file mode 100644 index 0000000..bb2f0fb --- /dev/null +++ b/src/utils/log.js @@ -0,0 +1,24 @@ +let logging = false; +let customLogger = () => {}; + +const setLogging = (_logging) => { + logging = _logging; +}; + +const setCustomLogger = (logger) => { + customLogger = logger; +}; + +const log = (type, message) => { + customLogger({ type, message }); + if (logging) { + console.log(`[${type}] ${message}`); + } +}; + +module.exports = { + logging, + setLogging, + setCustomLogger, + log, +}; diff --git a/src/utils/parseProgress.js b/src/utils/parseProgress.js new file mode 100644 index 0000000..dc1658a --- /dev/null +++ b/src/utils/parseProgress.js @@ -0,0 +1,28 @@ +let duration = 0; +let ratio = 0; + +const ts2sec = (ts) => { + const [h, m, s] = ts.split(':'); + return (parseFloat(h) * 60 * 60) + (parseFloat(m) * 60) + parseFloat(s); +}; + +module.exports = (message, progress) => { + if (typeof message === 'string') { + if (message.startsWith(' Duration')) { + const ts = message.split(', ')[0].split(': ')[1]; + const d = ts2sec(ts); + progress({ duration: d, ratio }); + if (duration === 0 || duration > d) { + duration = d; + } + } else if (message.startsWith('frame') || message.startsWith('size')) { + const ts = message.split('time=')[1].split(' ')[0]; + const t = ts2sec(ts); + ratio = t / duration; + progress({ ratio, time: t }); + } else if (message.startsWith('video:')) { + progress({ ratio: 1 }); + duration = 0; + } + } +}; From 50a8efbdae3b370e9d384993a5073c6d8d984186 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 18:37:02 +0000 Subject: [PATCH 18/30] Bump minimist from 1.2.5 to 1.2.6 Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66855fd..c8629e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2689,12 +2689,6 @@ "schema-utils": "^2.6.5" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "mkdirp": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", @@ -4528,14 +4522,6 @@ "dev": true, "requires": { "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "leven": { @@ -4599,12 +4585,6 @@ "requires": { "minimist": "^1.2.0" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true } } }, @@ -4810,9 +4790,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "mkdirp": { @@ -6760,12 +6740,6 @@ "requires": { "minimist": "^1.2.0" } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true } } }, From 0191cdf480cb8943b3dbb8239022bec4029decbc Mon Sep 17 00:00:00 2001 From: louielang Date: Tue, 19 Apr 2022 10:37:56 +0800 Subject: [PATCH 19/30] fix ffmpeg.exit() --- src/createFFmpeg.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/createFFmpeg.js b/src/createFFmpeg.js index c5425ce..f4ba9f2 100644 --- a/src/createFFmpeg.js +++ b/src/createFFmpeg.js @@ -21,6 +21,7 @@ module.exports = (_options = {}) => { let Core = null; let ffmpeg = null; let runResolve = null; + let runReject = null; let running = false; let progress = optProgress; const detectCompletion = (message) => { @@ -126,9 +127,10 @@ module.exports = (_options = {}) => { throw Error('ffmpeg.wasm can only run one command at a time'); } else { running = true; - return new Promise((resolve) => { + return new Promise((resolve, reject) => { const args = [...defaultArgs, ..._args].filter((s) => s.length !== 0); runResolve = resolve; + runReject = reject; ffmpeg(...parseArgs(Core, args)); }); } @@ -178,10 +180,18 @@ module.exports = (_options = {}) => { throw NO_LOAD; } else { running = false; - Core.exit(1); - Core = null; - ffmpeg = null; - runResolve = null; + try { + Core.exit(1); + } catch (err) { + if (runReject) { + runReject(err); + } + } finally { + Core = null; + ffmpeg = null; + runResolve = null; + runReject = null; + } } }; From 005cd568293ee04154cd18aafc8758ebb211268a Mon Sep 17 00:00:00 2001 From: cs8425 Date: Wed, 18 May 2022 14:39:21 +0800 Subject: [PATCH 20/30] use stringToUTF8() not writeAsciiToMemory() --- src/utils/parseArgs.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/utils/parseArgs.js b/src/utils/parseArgs.js index 94e7e6a..77f4d05 100644 --- a/src/utils/parseArgs.js +++ b/src/utils/parseArgs.js @@ -1,8 +1,9 @@ module.exports = (Core, args) => { const argsPtr = Core._malloc(args.length * Uint32Array.BYTES_PER_ELEMENT); args.forEach((s, idx) => { - const buf = Core._malloc(s.length + 1); - Core.writeAsciiToMemory(s, buf); + const sz = s.length*4 + 1; + const buf = Core._malloc(sz); + Core.stringToUTF8(s, buf, sz); Core.setValue(argsPtr + (Uint32Array.BYTES_PER_ELEMENT * idx), buf, 'i32'); }); return [args.length, argsPtr]; From d8085cb5330ed744fb159877d221810d89d292ff Mon Sep 17 00:00:00 2001 From: cs8425 Date: Wed, 18 May 2022 15:35:43 +0800 Subject: [PATCH 21/30] use lengthBytesUTF8() to compute the exact bytes of string --- src/utils/parseArgs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/parseArgs.js b/src/utils/parseArgs.js index 77f4d05..90c18c5 100644 --- a/src/utils/parseArgs.js +++ b/src/utils/parseArgs.js @@ -1,7 +1,7 @@ module.exports = (Core, args) => { const argsPtr = Core._malloc(args.length * Uint32Array.BYTES_PER_ELEMENT); args.forEach((s, idx) => { - const sz = s.length*4 + 1; + const sz = Core.lengthBytesUTF8(s) + 1; const buf = Core._malloc(sz); Core.stringToUTF8(s, buf, sz); Core.setValue(argsPtr + (Uint32Array.BYTES_PER_ELEMENT * idx), buf, 'i32'); From d8e235ba161f31de54e287564f2ba1bfa8e05987 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jun 2022 18:17:05 +0000 Subject: [PATCH 22/30] Bump shell-quote from 1.7.2 to 1.7.3 Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3. - [Release notes](https://github.com/substack/node-shell-quote/releases) - [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md) - [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3) --- updated-dependencies: - dependency-name: shell-quote dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66855fd..8f4ad27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6235,9 +6235,9 @@ "dev": true }, "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", "dev": true }, "signal-exit": { From cd3b7c2ed97bb9b05dfadf3d2db7edcb92f01b94 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Jun 2022 08:42:39 +0000 Subject: [PATCH 23/30] Bump node-fetch from 2.6.1 to 2.6.7 Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7. - [Release notes](https://github.com/node-fetch/node-fetch/releases) - [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v2.6.7) --- updated-dependencies: - dependency-name: node-fetch dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66855fd..6784fa7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5214,9 +5214,12 @@ "dev": true }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } }, "normalize-package-data": { "version": "2.5.0", @@ -6740,6 +6743,11 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "tsconfig-paths": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", @@ -6918,6 +6926,11 @@ "graceful-fs": "^4.1.2" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, "webpack": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.3.2.tgz", @@ -7184,6 +7197,15 @@ } } }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", From 6f29d7986261b3113429f3a2aed6ca5f78e507fe Mon Sep 17 00:00:00 2001 From: "Zheng (Jeff) Xu" Date: Wed, 20 Jul 2022 07:44:25 -0400 Subject: [PATCH 24/30] expose more FS methods to ts So I can use them in typescript project without syntax error. --- .gitignore | 5 ++++- src/index.d.ts | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 064213f..87ebeb4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ node_modules dist /.nyc_output -.DS_Store \ No newline at end of file +.DS_Store + +# ide +.idea/ diff --git a/src/index.d.ts b/src/index.d.ts index 5d0b749..c7af358 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -2,6 +2,8 @@ export const FS: { writeFile: (fileName: string, binaryData: Uint8Array) => void, readFile: (fileName: string) => Uint8Array, unlink: (fileName: string) => void, + mkdir: (fileName: string) => void, + readdir: (fileName: string) => string[], } type FSMethodNames = { [K in keyof typeof FS]: (typeof FS)[K] extends (...args: any[]) => any ? K : never }[keyof typeof FS]; From 8c693decb4def71c40b97089d36b2c715ea17a0d Mon Sep 17 00:00:00 2001 From: Jack Anderson Date: Mon, 8 Aug 2022 15:50:40 -0700 Subject: [PATCH 25/30] add `wasmPath` & `workerPath` as browser options --- src/browser/getCreateFFmpegCore.js | 6 +++--- src/index.d.ts | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/browser/getCreateFFmpegCore.js b/src/browser/getCreateFFmpegCore.js index f31167e..b402348 100644 --- a/src/browser/getCreateFFmpegCore.js +++ b/src/browser/getCreateFFmpegCore.js @@ -19,7 +19,7 @@ const toBlobURL = async (url, mimeType) => { return blobURL; }; -module.exports = async ({ corePath: _corePath }) => { +module.exports = async ({ corePath: _corePath, workerPath: _workerPath, wasmPath: _wasmPath }) => { if (typeof _corePath !== 'string') { throw Error('corePath should be a string!'); } @@ -29,11 +29,11 @@ module.exports = async ({ corePath: _corePath }) => { 'application/javascript', ); const wasmPath = await toBlobURL( - coreRemotePath.replace('ffmpeg-core.js', 'ffmpeg-core.wasm'), + _wasmPath !== undefined ? _wasmPath : coreRemotePath.replace('ffmpeg-core.js', 'ffmpeg-core.wasm'), 'application/wasm', ); const workerPath = await toBlobURL( - coreRemotePath.replace('ffmpeg-core.js', 'ffmpeg-core.worker.js'), + _workerPath !== undefined ? _workerPath : coreRemotePath.replace('ffmpeg-core.js', 'ffmpeg-core.worker.js'), 'application/javascript', ); if (typeof createFFmpegCore === 'undefined') { diff --git a/src/index.d.ts b/src/index.d.ts index 5d0b749..6d79c45 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -14,6 +14,10 @@ type ProgressCallback = (progressParams: { ratio: number }) => any; export interface CreateFFmpegOptions { /** path for ffmpeg-core.js script */ corePath?: string; + /** path for ffmpeg-worker.js script */ + workerPath?: string; + /** path for ffmpeg-core.wasm script */ + wasmPath?: string; /** a boolean to turn on all logs, default is false */ log?: boolean; /** a function to get log messages, a quick example is ({ message }) => console.log(message) */ From 2441973a710cb9e3b2cc2a17c35615d720bc806f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 14 Aug 2022 10:27:50 +0000 Subject: [PATCH 26/30] Bump ansi-regex from 3.0.0 to 3.0.1 Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1. - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1) --- updated-dependencies: - dependency-name: ansi-regex dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index a9a7809..618e81b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2431,9 +2431,9 @@ } }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -3346,12 +3346,6 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6341,6 +6335,12 @@ "strip-ansi": "^4.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -6566,9 +6566,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true } } From b155d43d6ec26ef31717dbba9206e8167dc21513 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 14 Aug 2022 10:27:52 +0000 Subject: [PATCH 27/30] Bump axios from 0.21.1 to 0.21.4 Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.4. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.4/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.4) --- updated-dependencies: - dependency-name: axios dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index a9a7809..50d7f31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2668,12 +2668,12 @@ "dev": true }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dev": true, "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.0" } }, "babel-loader": { From 2db7ed8ecd358012b4a9c9aad9b377c03cb4f4c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 14 Aug 2022 10:32:19 +0000 Subject: [PATCH 28/30] Bump terser from 5.3.8 to 5.14.2 Bumps [terser](https://github.com/terser/terser) from 5.3.8 to 5.14.2. - [Release notes](https://github.com/terser/terser/releases) - [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) - [Commits](https://github.com/terser/terser/commits) --- updated-dependencies: - dependency-name: terser dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 102 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 75 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f43377..3120913 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2072,6 +2072,55 @@ "@hapi/hoek": "^9.0.0" } }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@sideway/address": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz", @@ -6245,24 +6294,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -6614,21 +6645,38 @@ } }, "terser": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", - "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "source-map-support": "~0.5.20" }, "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } } } }, From 538ecd21d80690e355a1d1cf2a1ef08c686d9714 Mon Sep 17 00:00:00 2001 From: Jerome Wu Date: Sun, 14 Aug 2022 20:28:48 +0800 Subject: [PATCH 29/30] Fix lint error --- src/createFFmpeg.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/createFFmpeg.js b/src/createFFmpeg.js index 5432f98..3f38978 100644 --- a/src/createFFmpeg.js +++ b/src/createFFmpeg.js @@ -7,7 +7,7 @@ const NO_LOAD = Error('ffmpeg.wasm is not ready, make sure you have completed lo module.exports = (_options = {}) => { const { - log: logging, + log: optLog, logger, progress: optProgress, ...options @@ -22,6 +22,7 @@ module.exports = (_options = {}) => { let runReject = null; let running = false; let customLogger = () => {}; + let logging = optLog; let progress = optProgress; let duration = 0; let ratio = 0; @@ -44,12 +45,12 @@ module.exports = (_options = {}) => { const [h, m, s] = ts.split(':'); return (parseFloat(h) * 60 * 60) + (parseFloat(m) * 60) + parseFloat(s); }; - const parseProgress = (message, progress) => { + const parseProgress = (message, prog) => { if (typeof message === 'string') { if (message.startsWith(' Duration')) { const ts = message.split(', ')[0].split(': ')[1]; const d = ts2sec(ts); - progress({ duration: d, ratio }); + prog({ duration: d, ratio }); if (duration === 0 || duration > d) { duration = d; } @@ -57,9 +58,9 @@ module.exports = (_options = {}) => { const ts = message.split('time=')[1].split(' ')[0]; const t = ts2sec(ts); ratio = t / duration; - progress({ ratio, time: t }); + prog({ ratio, time: t }); } else if (message.startsWith('video:')) { - progress({ ratio: 1 }); + prog({ ratio: 1 }); duration = 0; } } @@ -213,8 +214,8 @@ module.exports = (_options = {}) => { throw NO_LOAD; } else { // if there's any pending runs, reject them - if(runReject) { - runReject('ffmpeg has exited') + if (runReject) { + runReject('ffmpeg has exited'); } running = false; try { From 2c393072905ed141e85a77cad4063c25ecefdabe Mon Sep 17 00:00:00 2001 From: Jerome Wu Date: Sun, 14 Aug 2022 20:37:11 +0800 Subject: [PATCH 30/30] Remove an invalid test --- tests/ffmpeg.test.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/tests/ffmpeg.test.js b/tests/ffmpeg.test.js index 270ad3d..2a434cd 100644 --- a/tests/ffmpeg.test.js +++ b/tests/ffmpeg.test.js @@ -48,16 +48,6 @@ describe('run()', () => { } }, 500); }).timeout(TIMEOUT); - - it('should terminate the run if exit is called', async () => { - const ffmpeg = createFFmpeg(OPTIONS); - await ffmpeg.load(); - - ffmpeg.run('-h').catch(e=> { - expect(e).to.be.equal('ffmpeg has exited') - }); - expect(ffmpeg.exit()).to.throw(); - }).timeout(TIMEOUT); }); describe('FS()', () => {