Skip to content

Commit 272c988

Browse files
save file
1 parent 9455d5c commit 272c988

File tree

1 file changed

+69
-0
lines changed
  • blog/25-11-15/ffmpeg-in-the-browser/ex/ffmpeg-wasm

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
2+
3+
4+
(async()=>{
5+
console.clear();
6+
7+
var {zip} = await import('https://cdn.jsdelivr.net/gh/javascript-2020/libs/js/io/tiny-unzip/tiny-unzip.m.js');
8+
var get = url=>fetch(url).then(res=>res.blob());
9+
var blob = await get('https://raw.githubusercontent.com/javascript-2020/external/main/ffmpeg/ffmpeg-wasm/ffmpeg-wasm.zip');
10+
var fnstr = (fn,_,js,i1,i2)=>(js=fn+'',i1=js.indexOf('{'),i2=js.lastIndexOf('}'),js.slice(i1+1,i2));
11+
12+
13+
var files = await zip.rd(blob);
14+
files.forEach(({name,blob})=>files[name]=blob);
15+
files['ffmpeg-core.wasm'] = window.URL.createObjectURL(files['ffmpeg-core.wasm']);
16+
var txt = ['ffmpeg-core.js','index.js','ffmpeg.js','814.ffmpeg.js'];
17+
await Promise.all(txt.map(async name=>files[name]=await files[name].text()));
18+
19+
var sandbox = {};
20+
21+
sandbox.worker = function(){
22+
23+
self.fetch = url=>new Promise(async res=>res(new Response('Not Found',{status:404})));
24+
self.onmessage = ({data:{lib,file}})=>{var importScripts=()=>self.eval(lib);eval(file)}
25+
26+
}//worker
27+
28+
sandbox.main = function(){
29+
30+
(()=>{
31+
32+
var globalThis = {document:{currentScript:{src:'https://null.com/'}}};
33+
function Worker(url){
34+
console.log('worker-sandbox',`${url}`);
35+
var js = fnstr(sandbox.worker);
36+
var blob = new Blob([js]);
37+
var url2 = window.URL.createObjectURL(blob);
38+
var worker = new window.Worker(url2);
39+
var lib = files['ffmpeg-core.js'];
40+
var name = url.pathname.split('/').at(-1);
41+
var file = files[name];
42+
worker.postMessage({lib,file});
43+
return worker;
44+
45+
}//worker
46+
47+
eval(files['ffmpeg.js']);
48+
49+
})();
50+
51+
}//main
52+
53+
eval(fnstr(sandbox.main));
54+
eval(files['index.js']);
55+
56+
var {fetchFile} = FFmpegUtil;
57+
var {FFmpeg} = FFmpegWASM;
58+
59+
var ffmpeg = new FFmpeg();
60+
await ffmpeg.load({coreURL:'ffmpeg-core.js',wasmURL:files['ffmpeg-core.wasm']});
61+
62+
ffmpeg.on('log',({message})=>console.log(message));
63+
await ffmpeg.exec(['-version']);
64+
65+
66+
})();
67+
68+
69+

0 commit comments

Comments
 (0)