seawolf2357 commited on
Commit
1a0b15a
ยท
verified ยท
1 Parent(s): de9797e

Update app-backup6.py

Browse files
Files changed (1) hide show
  1. app-backup6.py +53 -33
app-backup6.py CHANGED
@@ -659,18 +659,33 @@ rec.start(100);
659
 
660
  var dur=S.dur;
661
  var fps=30;
 
662
  var totalFrames=Math.ceil(dur*fps);
663
- var frameTime=1/fps;
664
 
665
- // ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ์ •ํ™•ํ•˜๊ฒŒ ๋ Œ๋”๋ง
666
- for(var frame=0;frame<totalFrames;frame++){{
667
- if(S.cancelled)break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
668
 
669
- var t=frame*frameTime;
670
- document.getElementById('exportBar').style.width=(frame/totalFrames*100)+'%';
671
- document.getElementById('exportMsg').textContent='๋…นํ™” ์ค‘... '+Math.round(frame/totalFrames*100)+'% ('+Math.floor(t)+'/'+Math.floor(dur)+'์ดˆ)';
672
 
673
- // ์˜คํ”„์Šคํฌ๋ฆฐ ์บ”๋ฒ„์Šค์— ๋จผ์ € ๊ทธ๋ฆผ
674
  offCtx.fillStyle='#000';
675
  offCtx.fillRect(0,0,1280,720);
676
 
@@ -680,8 +695,22 @@ var el=S.els[vc.mid];
680
  if(el){{
681
  if(vc.type==='video'){{
682
  var clipT=t-vc.start+vc.ts;
683
- await seekVideo(el,clipT);
 
 
 
 
 
 
 
 
 
 
 
684
  }}
 
 
 
685
  try{{
686
  var sw=el.videoWidth||el.naturalWidth||el.width||1280;
687
  var sh=el.videoHeight||el.naturalHeight||el.height||720;
@@ -690,19 +719,27 @@ var dw=sw*scale,dh=sh*scale;
690
  offCtx.drawImage(el,(1280-dw)/2,(720-dh)/2,dw,dh);
691
  }}catch(e){{}}
692
  }}
 
 
 
 
 
 
693
  }}
694
 
695
- // ์™„์„ฑ๋œ ํ”„๋ ˆ์ž„์„ ๋ฉ”์ธ ์บ”๋ฒ„์Šค๋กœ ํ•œ ๋ฒˆ์— ๋ณต์‚ฌ (๊นœ๋นก์ž„ ๋ฐฉ์ง€)
696
  ctx.drawImage(offCanvas,0,0);
697
 
698
- // ํ”„๋ ˆ์ž„ ๊ฐ„๊ฒฉ๋งŒํผ ๋Œ€๊ธฐ
699
- await new Promise(function(resolve){{setTimeout(resolve,33)}});
700
  }}
701
 
702
- // ๋…นํ™” ์ข…๋ฃŒ
703
- await new Promise(function(resolve){{
704
- rec.onstop=resolve;
705
- rec.stop();
 
 
 
706
  }});
707
 
708
  if(S.cancelled)return;
@@ -744,23 +781,6 @@ downloadDiv.appendChild(copyBtn);
744
  document.querySelector('.modal-box').appendChild(downloadDiv);
745
  }}
746
 
747
- // ๋น„๋””์˜ค seek ์™„๋ฃŒ ๋Œ€๊ธฐ ํ•จ์ˆ˜
748
- function seekVideo(video,time){{
749
- return new Promise(function(resolve){{
750
- if(Math.abs(video.currentTime-time)<0.05){{
751
- resolve();
752
- return;
753
- }}
754
- var onSeeked=function(){{
755
- video.removeEventListener('seeked',onSeeked);
756
- resolve();
757
- }};
758
- video.addEventListener('seeked',onSeeked);
759
- video.currentTime=time;
760
- setTimeout(resolve,200);
761
- }});
762
- }}
763
-
764
  function cancelExport(){{S.cancelled=true;document.getElementById('exportModal').style.display='none'}}
765
 
766
  document.addEventListener('keydown',function(e){{
 
659
 
660
  var dur=S.dur;
661
  var fps=30;
662
+ var frameInterval=1000/fps; // 33.33ms
663
  var totalFrames=Math.ceil(dur*fps);
664
+ var startTime=performance.now();
665
 
666
+ // ์‹ค์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง (์ •ํ™•ํ•œ ํƒ€์ด๋ฐ)
667
+ await new Promise(function(resolve){{
668
+ var frameCount=0;
669
+ var lastVideoEl=null;
670
+ var lastClipId=null;
671
+
672
+ function render(){{
673
+ if(S.cancelled){{rec.stop();resolve();return}}
674
+
675
+ var elapsed=performance.now()-startTime;
676
+ var t=elapsed/1000; // ํ˜„์žฌ ์‹œ๊ฐ„ (์ดˆ)
677
+
678
+ if(t>=dur){{
679
+ rec.stop();
680
+ setTimeout(resolve,100);
681
+ return;
682
+ }}
683
 
684
+ // ํ”„๋กœ๊ทธ๋ ˆ์Šค ์—…๋ฐ์ดํŠธ
685
+ document.getElementById('exportBar').style.width=(t/dur*100)+'%';
686
+ document.getElementById('exportMsg').textContent='๋…นํ™” ์ค‘... '+Math.round(t/dur*100)+'% ('+t.toFixed(1)+'/'+dur.toFixed(1)+'์ดˆ)';
687
 
688
+ // ์˜คํ”„์Šคํฌ๋ฆฐ ์บ”๋ฒ„์Šค์— ๋ Œ๋”๋ง
689
  offCtx.fillStyle='#000';
690
  offCtx.fillRect(0,0,1280,720);
691
 
 
695
  if(el){{
696
  if(vc.type==='video'){{
697
  var clipT=t-vc.start+vc.ts;
698
+
699
+ // ํด๋ฆฝ์ด ๋ฐ”๋€Œ๋ฉด seekํ•˜๊ณ  ์žฌ์ƒ
700
+ if(lastClipId!==vc.id){{
701
+ el.currentTime=clipT;
702
+ el.play().catch(function(){{}});
703
+ lastClipId=vc.id;
704
+ lastVideoEl=el;
705
+ }}
706
+
707
+ // ์ด์ „ ๋น„๋””์˜ค ์ •์ง€
708
+ if(lastVideoEl&&lastVideoEl!==el&&!lastVideoEl.paused){{
709
+ lastVideoEl.pause();
710
  }}
711
+ lastVideoEl=el;
712
+ }}
713
+
714
  try{{
715
  var sw=el.videoWidth||el.naturalWidth||el.width||1280;
716
  var sh=el.videoHeight||el.naturalHeight||el.height||720;
 
719
  offCtx.drawImage(el,(1280-dw)/2,(720-dh)/2,dw,dh);
720
  }}catch(e){{}}
721
  }}
722
+ }}else{{
723
+ // ํด๋ฆฝ ์—†์œผ๋ฉด ์ด์ „ ๋น„๋””์˜ค ์ •์ง€
724
+ if(lastVideoEl&&!lastVideoEl.paused){{
725
+ lastVideoEl.pause();
726
+ lastClipId=null;
727
+ }}
728
  }}
729
 
730
+ // ์™„์„ฑ๋œ ํ”„๋ ˆ์ž„์„ ๋ฉ”์ธ ์บ”๋ฒ„์Šค๋กœ ๋ณต์‚ฌ
731
  ctx.drawImage(offCanvas,0,0);
732
 
733
+ requestAnimationFrame(render);
 
734
  }}
735
 
736
+ requestAnimationFrame(render);
737
+ }});
738
+
739
+ // ๋ชจ๋“  ๋น„๋””์˜ค ์ •์ง€
740
+ Object.keys(S.els).forEach(function(k){{
741
+ var el=S.els[k];
742
+ if(el&&el.pause)el.pause();
743
  }});
744
 
745
  if(S.cancelled)return;
 
781
  document.querySelector('.modal-box').appendChild(downloadDiv);
782
  }}
783
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
784
  function cancelExport(){{S.cancelled=true;document.getElementById('exportModal').style.display='none'}}
785
 
786
  document.addEventListener('keydown',function(e){{