Fix Worker.terminate()

This commit is contained in:
jeromewu 2020-03-24 02:42:59 +00:00
parent 906dcd369f
commit eef80a979f
13 changed files with 30 additions and 7 deletions

View File

@ -10,6 +10,7 @@
- [Worker.trim](#worker-trim) - [Worker.trim](#worker-trim)
- [Worker.concatDemuxer](#worker-concatDemuxer) - [Worker.concatDemuxer](#worker-concatDemuxer)
- [Worker.run](#worker-run) - [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"); await worker.run("-i flame.avi -s 1920x1080 output.mp4");
})(); })();
``` ```
<a name="worker-run"></a>
### Worker.terminate(): Promise
Worker.terminate() terminates web worker / worker\_threads, after terminate(), you cannot use this worker anymore.
**Examples:**
```javascript
(async () => {
await worker.terminate();
})();
```

View File

@ -49,6 +49,7 @@
type: "video/mp4" type: "video/mp4"
}) })
); );
await worker.terminate();
}; };
const elm = document.getElementById("uploader"); const elm = document.getElementById("uploader");
elm.addEventListener("change", transcode); elm.addEventListener("change", transcode);

View File

@ -48,6 +48,7 @@
const video = document.getElementById('output-video'); const video = document.getElementById('output-video');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
await worker.terminate();
} }
const elm = document.getElementById('start-btn'); const elm = document.getElementById('start-btn');
elm.addEventListener('click', image2video); elm.addEventListener('click', image2video);

View File

@ -33,12 +33,13 @@
await worker.load(); await worker.load();
message.innerHTML = 'Start transcoding'; message.innerHTML = 'Start transcoding';
await worker.write(name, files[0]); 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'; message.innerHTML = 'Complete transcoding';
const { data } = await worker.read('output.mp4'); const { data } = await worker.read('output.mp4');
const video = document.getElementById('output-video'); const video = document.getElementById('output-video');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
await worker.terminate();
} }
const elm = document.getElementById('uploader'); const elm = document.getElementById('uploader');
elm.addEventListener('change', transcode); elm.addEventListener('change', transcode);

View File

@ -40,6 +40,7 @@
const video = document.getElementById('output-video'); const video = document.getElementById('output-video');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
await worker.terminate();
} }
const elm = document.getElementById('uploader'); const elm = document.getElementById('uploader');
elm.addEventListener('change', transcode); elm.addEventListener('change', transcode);

View File

@ -39,6 +39,7 @@
const video = document.getElementById('output-video'); const video = document.getElementById('output-video');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
await worker.terminate();
} }
const elm = document.getElementById('uploader'); const elm = document.getElementById('uploader');
elm.addEventListener('change', transcode); elm.addEventListener('change', transcode);

View File

@ -69,6 +69,7 @@
const video = document.getElementById('output-video'); const video = document.getElementById('output-video');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' })); video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
await worker.terminate();
} }
</script> </script>
</body> </body>

View File

@ -13,5 +13,5 @@ const worker = createWorker({
const { data } = await worker.read('flame.mp4'); const { data } = await worker.read('flame.mp4');
console.log('Complete concat'); console.log('Complete concat');
fs.writeFileSync('flame.mp4', Buffer.from(data)); fs.writeFileSync('flame.mp4', Buffer.from(data));
process.exit(0); await worker.terminate();
})(); })();

View File

@ -24,5 +24,5 @@ const worker = createWorker({
await worker.remove(`tmp.${num}.png`); await worker.remove(`tmp.${num}.png`);
} }
fs.writeFileSync('out.mp4', Buffer.from(data)); fs.writeFileSync('out.mp4', Buffer.from(data));
process.exit(0); await worker.terminate();
})(); })();

View File

@ -13,5 +13,5 @@ const worker = createWorker({
const { data } = await worker.read('flame.mp4'); const { data } = await worker.read('flame.mp4');
console.log('Complete transcoding'); console.log('Complete transcoding');
fs.writeFileSync('flame.mp4', Buffer.from(data)); fs.writeFileSync('flame.mp4', Buffer.from(data));
process.exit(0); await worker.terminate();
})(); })();

View File

@ -13,5 +13,5 @@ const worker = createWorker({
const { data } = await worker.read('flame.mp4'); const { data } = await worker.read('flame.mp4');
console.log('Complete transcoding'); console.log('Complete transcoding');
fs.writeFileSync('flame.mp4', Buffer.from(data)); fs.writeFileSync('flame.mp4', Buffer.from(data));
process.exit(0); await worker.terminate();
})(); })();

View File

@ -13,5 +13,5 @@ const worker = createWorker({
const { data } = await worker.read('flame_trim.avi'); const { data } = await worker.read('flame_trim.avi');
console.log('Complete trimming'); console.log('Complete trimming');
fs.writeFileSync('flame_trim.avi', Buffer.from(data)); fs.writeFileSync('flame_trim.avi', Buffer.from(data));
process.exit(0); await worker.terminate();
})(); })();

View File

@ -148,12 +148,14 @@ module.exports = (_options = {}) => {
return run(`-f concat -safe 0 -i concat_list.txt ${opts} ${output}`, jobId); return run(`-f concat -safe 0 -i concat_list.txt ${opts} ${output}`, jobId);
}; };
const terminate = async (jobId) => { const terminate = async () => {
if (worker !== null) { if (worker !== null) {
/*
await startJob(createJob({ await startJob(createJob({
id: jobId, id: jobId,
action: 'terminate', action: 'terminate',
})); }));
*/
worker.terminate(); worker.terminate();
worker = null; worker = null;
} }