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