1
1
< html >
2
2
< head >
3
- < script src ="/dist/ffmpeg.dev.js "> </ script >
4
- < style >
5
- html ,
6
- body {
7
- margin : 0 ;
8
- width : 100% ;
9
- height : 100% ;
10
- }
11
-
12
- body {
13
- display : flex;
14
- flex-direction : column;
15
- align-items : center;
16
- }
17
- </ style >
3
+ < link rel ="stylesheet " href ="style.css ">
4
+ < script src ="../../packages/ffmpeg/dist/umd/ffmpeg.js "> </ script >
5
+ < script src ="../../packages/util/dist/umd/index.js "> </ script >
18
6
</ head >
19
7
20
8
< body >
@@ -23,24 +11,35 @@ <h3>Select multiple video files to Concatenate</h3>
23
11
< input type ="file " id ="uploader " multiple />
24
12
< p id ="message "> </ p >
25
13
< script >
26
- const { createFFmpeg, fetchFile } = FFmpeg ;
27
- const ffmpeg = createFFmpeg ( { log : true } ) ;
14
+ const { fetchFile } = FFmpegUtil ;
15
+ const { FFmpeg } = FFmpegWASM ;
16
+ let ffmpeg = null ;
28
17
29
18
const transcode = async ( { target : { files } } ) => {
30
19
const message = document . getElementById ( "message" ) ;
31
- message . innerHTML = "Loading ffmpeg-core.js" ;
32
- await ffmpeg . load ( ) ;
20
+ if ( ffmpeg === null ) {
21
+ ffmpeg = new FFmpeg ( ) ;
22
+ ffmpeg . on ( "log" , ( { message } ) => {
23
+ console . log ( message ) ;
24
+ } )
25
+ ffmpeg . on ( "progress" , ( { progress } ) => {
26
+ message . innerHTML = `${ progress * 100 } %` ;
27
+ } ) ;
28
+ await ffmpeg . load ( {
29
+ coreURL : "/packages/core/dist/umd/ffmpeg-core.js" ,
30
+ } ) ;
31
+ }
33
32
message . innerHTML = "Start Concating" ;
34
33
const inputPaths = [ ] ;
35
34
for ( const file of files ) {
36
35
const { name } = file ;
37
- ffmpeg . FS ( ' writeFile' , name , await fetchFile ( file ) ) ;
36
+ ffmpeg . writeFile ( name , await fetchFile ( file ) ) ;
38
37
inputPaths . push ( `file ${ name } ` ) ;
39
38
}
40
- ffmpeg . FS ( ' writeFile' , 'concat_list.txt' , inputPaths . join ( '\n' ) ) ;
41
- await ffmpeg . run ( '-f' , 'concat' , '-safe' , '0' , '-i' , 'concat_list.txt' , 'output.mp4' ) ;
39
+ await ffmpeg . writeFile ( 'concat_list.txt' , inputPaths . join ( '\n' ) ) ;
40
+ await ffmpeg . exec ( [ '-f' , 'concat' , '-safe' , '0' , '-i' , 'concat_list.txt' , 'output.mp4' ] ) ;
42
41
message . innerHTML = "Complete Concating" ;
43
- const data = ffmpeg . FS ( ' readFile' , 'output.mp4' ) ;
42
+ const data = await ffmpeg . readFile ( 'output.mp4' ) ;
44
43
const video = document . getElementById ( "output-video" ) ;
45
44
video . src = URL . createObjectURL (
46
45
new Blob ( [ data . buffer ] , {
0 commit comments