25 lines
779 B
JavaScript
25 lines
779 B
JavaScript
importScripts('/dist/ffmpeg.dev.js');
|
|
const ffmpeg = self.FFmpeg.createFFmpeg({log: true});
|
|
|
|
onmessage = async (event) => {
|
|
try {
|
|
const {buffer, name, inType, outType} = event.data;
|
|
if (!ffmpeg.isLoaded()) {
|
|
await ffmpeg.load();
|
|
}
|
|
|
|
ffmpeg.FS('writeFile', `${name}.${inType}`, new Uint8Array(buffer));
|
|
await ffmpeg.run('-i', `${name}.${inType}`, `${name}.${outType}`);
|
|
const data = ffmpeg.FS('readFile', `${name}.${outType}`);
|
|
|
|
postMessage({buffer: data.buffer, type: "result"}, [data.buffer]);
|
|
|
|
// delete files from memory
|
|
ffmpeg.FS('unlink', `${name}.${inType}`);
|
|
ffmpeg.FS('unlink', `${name}.${outType}`);
|
|
} catch (e) {
|
|
postMessage({type: "error", error: e});
|
|
}
|
|
}
|
|
|