diff --git a/docs/api.md b/docs/api.md index 1ca0faa..f7751de 100644 --- a/docs/api.md +++ b/docs/api.md @@ -10,6 +10,7 @@ - [Worker.trim](#worker-trim) - [Worker.concatDemuxer](#worker-concatDemuxer) - [Worker.run](#worker-run) + - [Worker.terminate](#worker-terminate) --- @@ -230,3 +231,17 @@ Worker.run() is similar to FFmpeg cli tool, aims to provide maximum flexiblity f await worker.run("-i flame.avi -s 1920x1080 output.mp4"); })(); ``` + + + +### Worker.terminate(): Promise + +Worker.terminate() terminates web worker / worker\_threads, after terminate(), you cannot use this worker anymore. + +**Examples:** + +```javascript +(async () => { + await worker.terminate(); +})(); +``` diff --git a/examples/browser/concatDemuxer.html b/examples/browser/concatDemuxer.html index 1295ceb..f80803b 100644 --- a/examples/browser/concatDemuxer.html +++ b/examples/browser/concatDemuxer.html @@ -49,6 +49,7 @@ type: "video/mp4" }) ); + await worker.terminate(); }; const elm = document.getElementById("uploader"); elm.addEventListener("change", transcode); diff --git a/examples/browser/image2video.html b/examples/browser/image2video.html index 831a3dd..489af26 100644 --- a/examples/browser/image2video.html +++ b/examples/browser/image2video.html @@ -48,6 +48,7 @@ const video = document.getElementById('output-video'); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); + await worker.terminate(); } const elm = document.getElementById('start-btn'); elm.addEventListener('click', image2video); diff --git a/examples/browser/run.html b/examples/browser/run.html index 36c1abe..57b2578 100644 --- a/examples/browser/run.html +++ b/examples/browser/run.html @@ -33,12 +33,13 @@ await worker.load(); message.innerHTML = 'Start transcoding'; await worker.write(name, files[0]); - await worker.run(`-i /data/${name} output.mp4`, { input: name, output: 'output.mp4' }); + await worker.run(`-i /data/${name} output.mp4`); message.innerHTML = 'Complete transcoding'; const { data } = await worker.read('output.mp4'); const video = document.getElementById('output-video'); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); + await worker.terminate(); } const elm = document.getElementById('uploader'); elm.addEventListener('change', transcode); diff --git a/examples/browser/transcode.html b/examples/browser/transcode.html index cb14c37..15b82e7 100644 --- a/examples/browser/transcode.html +++ b/examples/browser/transcode.html @@ -40,6 +40,7 @@ const video = document.getElementById('output-video'); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); + await worker.terminate(); } const elm = document.getElementById('uploader'); elm.addEventListener('change', transcode); diff --git a/examples/browser/trim.html b/examples/browser/trim.html index 8d8250b..151f31d 100644 --- a/examples/browser/trim.html +++ b/examples/browser/trim.html @@ -39,6 +39,7 @@ const video = document.getElementById('output-video'); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); + await worker.terminate(); } const elm = document.getElementById('uploader'); elm.addEventListener('change', transcode); diff --git a/examples/browser/webcam.html b/examples/browser/webcam.html index db348d3..79acb22 100644 --- a/examples/browser/webcam.html +++ b/examples/browser/webcam.html @@ -69,6 +69,7 @@ const video = document.getElementById('output-video'); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); + await worker.terminate(); } diff --git a/examples/node/concatDemuxer.js b/examples/node/concatDemuxer.js index d13e101..c248937 100755 --- a/examples/node/concatDemuxer.js +++ b/examples/node/concatDemuxer.js @@ -13,5 +13,5 @@ const worker = createWorker({ const { data } = await worker.read('flame.mp4'); console.log('Complete concat'); fs.writeFileSync('flame.mp4', Buffer.from(data)); - process.exit(0); + await worker.terminate(); })(); diff --git a/examples/node/image2video.js b/examples/node/image2video.js index f705f0c..34bdd05 100755 --- a/examples/node/image2video.js +++ b/examples/node/image2video.js @@ -24,5 +24,5 @@ const worker = createWorker({ await worker.remove(`tmp.${num}.png`); } fs.writeFileSync('out.mp4', Buffer.from(data)); - process.exit(0); + await worker.terminate(); })(); diff --git a/examples/node/run.js b/examples/node/run.js index 4946333..9857b2d 100755 --- a/examples/node/run.js +++ b/examples/node/run.js @@ -13,5 +13,5 @@ const worker = createWorker({ const { data } = await worker.read('flame.mp4'); console.log('Complete transcoding'); fs.writeFileSync('flame.mp4', Buffer.from(data)); - process.exit(0); + await worker.terminate(); })(); diff --git a/examples/node/transcode.js b/examples/node/transcode.js index 2fcd626..b9658c8 100755 --- a/examples/node/transcode.js +++ b/examples/node/transcode.js @@ -13,5 +13,5 @@ const worker = createWorker({ const { data } = await worker.read('flame.mp4'); console.log('Complete transcoding'); fs.writeFileSync('flame.mp4', Buffer.from(data)); - process.exit(0); + await worker.terminate(); })(); diff --git a/examples/node/trim.js b/examples/node/trim.js index d9689b7..a3b3997 100755 --- a/examples/node/trim.js +++ b/examples/node/trim.js @@ -13,5 +13,5 @@ const worker = createWorker({ const { data } = await worker.read('flame_trim.avi'); console.log('Complete trimming'); fs.writeFileSync('flame_trim.avi', Buffer.from(data)); - process.exit(0); + await worker.terminate(); })(); diff --git a/src/createWorker.js b/src/createWorker.js index 5c8d511..ebce57f 100644 --- a/src/createWorker.js +++ b/src/createWorker.js @@ -148,12 +148,14 @@ module.exports = (_options = {}) => { return run(`-f concat -safe 0 -i concat_list.txt ${opts} ${output}`, jobId); }; - const terminate = async (jobId) => { + const terminate = async () => { if (worker !== null) { + /* await startJob(createJob({ id: jobId, action: 'terminate', })); + */ worker.terminate(); worker = null; }