164164 # video-root > div
165165 {display : flex;flex-direction : column;gap : 10px }
166166
167+ # results
168+ {display : flex;gap : 20px }
169+ .item
170+ {display : flex;flex-direction : column;gap : 10px }
171+
167172 # output
168173 {border : 1px solid lightgray;padding : 10px ;border-radius : 10px ;white-space : pre-wrap;overflow : auto;font-size : 16px ;font-family : monospace;flex : 1 }
169174
@@ -207,14 +212,15 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
207212 </ span >
208213 < span id =height >
209214 height
210- < input value =50 >
215+ < input value =100 >
211216 </ span >
212217 </ span >
213218 < span id =secs >
214219 secs
215220 < input value =03 >
216221 </ span >
217222 < input value =generate type =button >
223+ < input value =auto type =button >
218224 </ div >
219225
220226 < div id =video-root >
@@ -229,8 +235,14 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
229235 </ div >
230236 </ div >
231237 </ div >
232- < div >
233- < img id =thumbnail >
238+ < div id =results >
239+ < div class =item style ='display:none '>
240+ < img class =thumbnail >
241+ < div >
242+ < div class =dims > </ div >
243+ < div class =size > </ div >
244+ </ div >
245+ </ div >
234246 </ div >
235247
236248 < pre id =output > </ pre >
@@ -248,7 +260,8 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
248260 var ffmpeg_debug = false ;
249261 var cur = { } ;
250262 var video ;
251- var img ;
263+ var results ;
264+ var item ;
252265
253266
254267 var btn = { } ;
@@ -263,11 +276,15 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
263276
264277
265278 $ ( '[value=generate]' ) . onclick = btn . generate ;
279+ $ ( '[value=auto]' ) . onclick = btn . auto ;
266280
267281 video = $ ( 'video' ) ;
268282 video . onloadedmetadata = onloadedmetadata ;
269283
270- img = $ ( '#thumbnail' ) ;
284+ results = $ ( '#results' ) ;
285+ item = $ ( '.item' ) ;
286+ item . remove ( ) ;
287+ item . style . display = '' ;
271288
272289 output = $ ( '#output' ) ;
273290
@@ -308,6 +325,7 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
308325 return ;
309326 }
310327
328+
311329 var w = $ ( '#width [value]' ) . value ;
312330 w = Number ( w ) ;
313331 if ( isNaN ( w ) ) {
@@ -340,6 +358,7 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
340358
341359 cur . status = true ;
342360
361+
343362 if ( $ ( '#png [type]' ) . checked ) {
344363 gen . png ( w , h , secs ) ;
345364 }
@@ -351,6 +370,56 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
351370 } //generate
352371
353372
373+ btn . auto = function ( ) {
374+
375+ if ( cur . status ) {
376+ log . red ( 'already running' ) ;
377+ return ;
378+ }
379+
380+ if ( ! cur . file ) {
381+ log . red ( 'no file selected' ) ;
382+ return ;
383+ }
384+
385+ var w = - 1 ;
386+ var h = 25 ;
387+ var secs = 0 ;
388+
389+ for ( secs = 0 ; secs <= 5 ; secs ++ ) {
390+
391+ w = - 1 ;
392+ for ( h = 25 ; h <= 100 ; h += 25 ) {
393+
394+ fn ( ) ;
395+
396+ } //for
397+
398+ h = - 1 ;
399+ for ( w = 25 ; w <= 100 ; w += 25 ) {
400+
401+ fn ( ) ;
402+
403+ } //for
404+
405+ } //for
406+
407+
408+ function fn ( ) {
409+
410+ if ( $ ( '#png [type]' ) . checked ) {
411+ gen . png ( w , h , secs ) ;
412+ }
413+
414+ if ( $ ( '#jpg [type]' ) . checked ) {
415+ gen . jpg ( w , h , secs ) ;
416+ }
417+
418+ } //gen
419+
420+ } //auto
421+
422+
354423 gen . png = async function ( w , h , secs ) {
355424
356425 var fn = cur . file . filename ;
@@ -373,7 +442,7 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
373442 } //png
374443
375444
376- gen . jpg = async function ( ) {
445+ gen . jpg = async function ( w , h , secs ) {
377446
378447 var fn = cur . file . filename ;
379448 var fn2 = fn . split ( '.' ) [ 0 ] ;
@@ -399,7 +468,18 @@ <h1 slot=seo-hdr class=visually-hidden>video thumbnail generator</h1>
399468
400469 cur . status = false ;
401470 var url = window . URL . createObjectURL ( blob ) ;
471+ var nitem = item . cloneNode ( true ) ;
472+ var img = $ ( nitem , 'img' ) ;
473+ img . onload = onload ;
402474 img . src = url ;
475+ $ ( nitem , '.size' ) . textContent = hs ( blob . size ) ;
476+ results . append ( nitem ) ;
477+
478+ function onload ( ) {
479+
480+ $ ( nitem , '.dims' ) . textContent = img . naturalWidth + ' x ' + img . naturalHeight ;
481+
482+ } //onload
403483
404484 } //complete
405485
0 commit comments