@@ -210,6 +210,10 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
210210 < input value =-1 >
211211 </ span >
212212 </ span >
213+ < span id =secs >
214+ secs
215+ < input value =03 >
216+ </ span >
213217 < input value =generate type =button >
214218 </ div >
215219
@@ -317,20 +321,36 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
317321 return
318322 }
319323
324+ var secs = $ ( '#secs [value]' ) . value ;
325+ secs = Number ( secs ) ;
326+ if ( isNaN ( secs ) ) {
327+ log . red ( 'invalid secs' ) ;
328+ return ;
329+ }
330+ if ( ! Number . isInteger ( secs ) ) {
331+ log . red ( 'secs should be integer' ) ;
332+ return ;
333+ }
334+ if ( secs < 0 || secs > 59 ) {
335+ log . red ( 'invalid secs' ) ;
336+ return ;
337+ }
338+ secs = ( '' + secs ) . padStart ( 2 , '0' ) ;
339+
320340 cur . status = true ;
321341
322342 if ( $ ( '#png [type]' ) . checked ) {
323- gen . png ( ) ;
343+ gen . png ( w , h , secs ) ;
324344 }
325345
326346 if ( $ ( '#jpg [type]' ) . checked ) {
327- gen . jpg ( ) ;
347+ gen . jpg ( w , h , secs ) ;
328348 }
329349
330350 } //generate
331351
332352
333- gen . png = async function ( ) {
353+ gen . png = async function ( w , h , secs ) {
334354
335355 var fn = cur . file . filename ;
336356 var fn2 = fn . split ( '.' ) [ 0 ] ;
@@ -340,7 +360,7 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
340360
341361 await ffmpeg . writeFile ( fn , uint8 ) ;
342362
343- var cmd = `ffmpeg -nostdin -ss 00:00:03 .00 -i ${ fn } -vframes 1 -vf scale=-1:50 ${ thumb } ` ;
363+ var cmd = `ffmpeg -nostdin -ss 00:00:${ secs } .00 -i ${ fn } -vframes 1 -vf scale=${ w } : ${ h } ${ thumb } ` ;
344364 var args = cmd . split ( ' ' ) . slice ( 1 ) ;
345365
346366 await ffmpeg . exec ( args ) ;
@@ -352,7 +372,25 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
352372 } //png
353373
354374
355- gen . jpg = function ( ) {
375+ gen . jpg = async function ( ) {
376+
377+ var fn = cur . file . filename ;
378+ var fn2 = fn . split ( '.' ) [ 0 ] ;
379+ var thumb = fn2 + '.jpg' ;
380+
381+ var uint8 = await _uint8 ( cur . blob ) ;
382+
383+ await ffmpeg . writeFile ( fn , uint8 ) ;
384+
385+ var cmd = `ffmpeg -nostdin -ss 00:00:${ secs } .00 -i ${ fn } -vframes 1 -vf scale=${ w } :${ h } ${ thumb } ` ;
386+ var args = cmd . split ( ' ' ) . slice ( 1 ) ;
387+
388+ await ffmpeg . exec ( args ) ;
389+
390+ var data = await ffmpeg . readFile ( thumb ) ;
391+ var thumbnail = _blob ( data ) ;
392+ gen . complete ( thumbnail , thumb ) ;
393+
356394 } //jpg
357395
358396
0 commit comments