openfree commited on
Commit
b064632
Β·
verified Β·
1 Parent(s): 314ea33

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -9
app.py CHANGED
@@ -38,13 +38,14 @@ from torchvision import transforms
38
 
39
 
40
  # ── moviepy import ──────────────────────────────────────────
 
41
  try:
42
- # editor μ„œλΈŒλͺ¨λ“ˆμ΄ 있으면 μš°μ„  μ‚¬μš©
43
  from moviepy.editor import VideoFileClip, concatenate_videoclips
44
  except ImportError:
45
  from moviepy import VideoFileClip, concatenate_videoclips
46
 
47
- # resize ν•¨μˆ˜: λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ μ‹œλ„
 
48
  try:
49
  from moviepy.video.fx.resize import resize
50
  except ImportError:
@@ -54,10 +55,45 @@ except ImportError:
54
  try:
55
  from moviepy.video.fx import resize
56
  except ImportError:
57
- # resizeκ°€ μ—†μœΌλ©΄ λŒ€μ²΄ ν•¨μˆ˜ 생성
58
- def resize(clip, newsize):
59
- """Fallback resize function when moviepy resize is not available"""
60
- return clip
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
  from moviepy import (
63
  ImageSequenceClip,
@@ -67,12 +103,14 @@ from moviepy import (
67
  )
68
  from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
69
  from moviepy.video.VideoClip import ColorClip
70
- # ── moviepy import ──────────────────────────────────────────
71
  import time
72
  from concurrent.futures import ThreadPoolExecutor
73
 
74
 
75
 
 
 
76
  # ── moviepy import ──────────────────────────────────────────
77
  # editor μ„œλΈŒλͺ¨λ“ˆμ΄ μžˆλŠ” 경우 μš°μ„  μ‚¬μš©, μ—†μœΌλ©΄ μ΅œμƒμœ„ moviepy μ‚¬μš©
78
  try:
@@ -621,17 +659,24 @@ def process_video_bg(vid, bg_type="색상", bg_image=None, bg_video=None, color=
621
 
622
  processed_frames = []
623
  yield gr.update(visible=True), gr.update(visible=False), f"처리 μ‹œμž‘... κ²½κ³Ό μ‹œκ°„: 0초"
624
-
625
  if bg_type == "λΉ„λ””μ˜€":
626
  background_video = VideoFileClip(bg_video)
627
  if background_video.duration < video.duration:
628
  if video_handling == "slow_down":
629
- background_video = background_video.fx(vfx.speedx, factor=video.duration / background_video.duration)
 
 
 
 
 
630
  else: # video_handling == "loop"
631
  background_video = concatenate_videoclips([background_video] * int(video.duration / background_video.duration + 1))
632
  background_frames = list(background_video.iter_frames(fps=fps))
633
  else:
634
  background_frames = None
 
 
635
 
636
  bg_frame_index = 0
637
 
 
38
 
39
 
40
  # ── moviepy import ──────────────────────────────────────────
41
+
42
  try:
 
43
  from moviepy.editor import VideoFileClip, concatenate_videoclips
44
  except ImportError:
45
  from moviepy import VideoFileClip, concatenate_videoclips
46
 
47
+ # resize ν•¨μˆ˜ import μ‹œλ„
48
+ resize = None
49
  try:
50
  from moviepy.video.fx.resize import resize
51
  except ImportError:
 
55
  try:
56
  from moviepy.video.fx import resize
57
  except ImportError:
58
+ pass # resizeλ₯Ό 찾을 수 μ—†μŒ
59
+
60
+ # resizeκ°€ μ—†μœΌλ©΄ λŒ€μ²΄ ν•¨μˆ˜ 생성
61
+ if resize is None:
62
+ def resize(clip, newsize=None, height=None, width=None):
63
+ """Fallback resize function when moviepy resize is not available"""
64
+ if hasattr(clip, 'resize'):
65
+ if newsize:
66
+ return clip.resize(newsize)
67
+ elif height:
68
+ return clip.resize(height=height)
69
+ elif width:
70
+ return clip.resize(width=width)
71
+ return clip
72
+
73
+ # speedx ν•¨μˆ˜ import μ‹œλ„
74
+ speedx = None
75
+ try:
76
+ from moviepy.video.fx.speedx import speedx
77
+ except ImportError:
78
+ try:
79
+ from moviepy.video.fx.all import speedx
80
+ except ImportError:
81
+ try:
82
+ from moviepy.video.fx import speedx
83
+ except ImportError:
84
+ pass # speedxλ₯Ό 찾을 수 μ—†μŒ
85
+
86
+ # speedxκ°€ μ—†μœΌλ©΄ λŒ€μ²΄ ν•¨μˆ˜ 생성
87
+ if speedx is None:
88
+ def speedx(clip, factor=1.0, final_duration=None):
89
+ """Fallback speedx function"""
90
+ if hasattr(clip, 'fx') and hasattr(clip.fx, 'speedx'):
91
+ return clip.fx.speedx(factor, final_duration)
92
+ elif hasattr(clip, 'fl_time'):
93
+ return clip.fl_time(lambda t: t * factor)
94
+ else:
95
+ # μ΅œν›„μ˜ μˆ˜λ‹¨: 클립 κ·ΈλŒ€λ‘œ λ°˜ν™˜
96
+ return clip
97
 
98
  from moviepy import (
99
  ImageSequenceClip,
 
103
  )
104
  from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
105
  from moviepy.video.VideoClip import ColorClip
106
+
107
  import time
108
  from concurrent.futures import ThreadPoolExecutor
109
 
110
 
111
 
112
+
113
+
114
  # ── moviepy import ──────────────────────────────────────────
115
  # editor μ„œλΈŒλͺ¨λ“ˆμ΄ μžˆλŠ” 경우 μš°μ„  μ‚¬μš©, μ—†μœΌλ©΄ μ΅œμƒμœ„ moviepy μ‚¬μš©
116
  try:
 
659
 
660
  processed_frames = []
661
  yield gr.update(visible=True), gr.update(visible=False), f"처리 μ‹œμž‘... κ²½κ³Ό μ‹œκ°„: 0초"
662
+
663
  if bg_type == "λΉ„λ””μ˜€":
664
  background_video = VideoFileClip(bg_video)
665
  if background_video.duration < video.duration:
666
  if video_handling == "slow_down":
667
+ # vfx.speedx λŒ€μ‹  speedx ν•¨μˆ˜ 직접 μ‚¬μš©
668
+ if speedx is not None:
669
+ background_video = speedx(background_video, factor=video.duration / background_video.duration)
670
+ else:
671
+ # speedxκ°€ μ—†μœΌλ©΄ 반볡으둜 λŒ€μ²΄
672
+ background_video = concatenate_videoclips([background_video] * int(video.duration / background_video.duration + 1))
673
  else: # video_handling == "loop"
674
  background_video = concatenate_videoclips([background_video] * int(video.duration / background_video.duration + 1))
675
  background_frames = list(background_video.iter_frames(fps=fps))
676
  else:
677
  background_frames = None
678
+
679
+
680
 
681
  bg_frame_index = 0
682