Spaces:
Running
Running
(function(){"use strict";const a="https://unpkg.com/@ffmpeg/[email protected]/dist/umd/ffmpeg-core.js";var o;(function(r){r.LOAD="LOAD",r.EXEC="EXEC",r.WRITE_FILE="WRITE_FILE",r.READ_FILE="READ_FILE",r.DELETE_FILE="DELETE_FILE",r.RENAME="RENAME",r.CREATE_DIR="CREATE_DIR",r.LIST_DIR="LIST_DIR",r.DELETE_DIR="DELETE_DIR",r.ERROR="ERROR",r.DOWNLOAD="DOWNLOAD",r.PROGRESS="PROGRESS",r.LOG="LOG"})(o||(o={}));const i=new Error("unknown message type"),f=new Error("ffmpeg is not loaded, call `await ffmpeg.load()` first"),D=new Error("failed to import ffmpeg-core.js");let e;const L=async({coreURL:r=a,wasmURL:s,workerURL:E})=>{const n=!e,t=r,c=s||r.replace(/.js$/g,".wasm"),_=E||r.replace(/.js$/g,".worker.js");try{importScripts(t)}catch{if(self.createFFmpegCore=(await import(t)).default,!self.createFFmpegCore)throw D}return e=await self.createFFmpegCore({mainScriptUrlOrBlob:`${t}#${btoa(JSON.stringify({wasmURL:c,workerURL:_}))}`}),e.setLogger(R=>self.postMessage({type:o.LOG,data:R})),e.setProgress(R=>self.postMessage({type:o.PROGRESS,data:R})),n},l=({args:r,timeout:s=-1})=>{e.setTimeout(s),e.exec(...r);const E=e.ret;return e.reset(),E},O=({path:r,data:s})=>(e.FS.writeFile(r,s),!0),I=({path:r,encoding:s})=>e.FS.readFile(r,{encoding:s}),m=({path:r})=>(e.FS.unlink(r),!0),u=({oldPath:r,newPath:s})=>(e.FS.rename(r,s),!0),S=({path:r})=>(e.FS.mkdir(r),!0),A=({path:r})=>{const s=e.FS.readdir(r),E=[];for(const n of s){const t=e.FS.stat(`${r}/${n}`),c=e.FS.isDir(t.mode);E.push({name:n,isDir:c})}return E},w=({path:r})=>(e.FS.rmdir(r),!0);self.onmessage=async({data:{id:r,type:s,data:E}})=>{const n=[];let t;try{if(s!==o.LOAD&&!e)throw f;switch(s){case o.LOAD:t=await L(E);break;case o.EXEC:t=l(E);break;case o.WRITE_FILE:t=O(E);break;case o.READ_FILE:t=I(E);break;case o.DELETE_FILE:t=m(E);break;case o.RENAME:t=u(E);break;case o.CREATE_DIR:t=S(E);break;case o.LIST_DIR:t=A(E);break;case o.DELETE_DIR:t=w(E);break;default:throw i}}catch(c){self.postMessage({id:r,type:o.ERROR,data:c.toString()});return}t instanceof Uint8Array&&n.push(t.buffer),self.postMessage({id:r,type:s,data:t},n)}})(); | |