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.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");
})();
```
<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"
})
);
await worker.terminate();
};
const elm = document.getElementById("uploader");
elm.addEventListener("change", transcode);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

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

View File

@ -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();
})();

View File

@ -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();
})();

View File

@ -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();
})();

View File

@ -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();
})();

View File

@ -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();
})();

View File

@ -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;
}