Update app.py
Browse files
app.py
CHANGED
@@ -31,16 +31,32 @@ from einops import rearrange
|
|
31 |
from scipy.io import wavfile
|
32 |
from transformers import pipeline
|
33 |
|
34 |
-
# λΉλμ€
|
35 |
from transformers import AutoModelForImageSegmentation
|
36 |
from torchvision import transforms
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
|
39 |
from moviepy.video.VideoClip import ColorClip
|
|
|
|
|
40 |
import time
|
41 |
from concurrent.futures import ThreadPoolExecutor
|
42 |
|
43 |
-
|
44 |
|
45 |
# νκ²½ λ³μ μ€μ μΌλ‘ torch.load μ²΄ν¬ μ°ν (μμ ν΄κ²°μ±
)
|
46 |
os.environ["TRANSFORMERS_ALLOW_UNSAFE_DESERIALIZATION"] = "1"
|
@@ -657,20 +673,20 @@ def merge_videos_with_audio(video_files, audio_file, audio_volume, output_fps):
|
|
657 |
logging.warning(f"λΉλμ€ ν¬κΈ°κ° μλ‘ λ€λ¦
λλ€. 첫 λ²μ§Έ λΉλμ€ ν¬κΈ°({target_width}x{target_height})λ‘ μ‘°μ ν©λλ€.")
|
658 |
|
659 |
# ν¬κΈ°κ° λ€λ₯Έ λΉλμ€λ€μ μ‘°μ
|
660 |
-
|
661 |
adjusted_clips = []
|
662 |
-
for
|
663 |
-
if
|
664 |
-
#
|
665 |
-
adjusted_clip = clip.
|
|
|
|
|
|
|
666 |
adjusted_clips.append(adjusted_clip)
|
667 |
else:
|
668 |
adjusted_clips.append(clip)
|
669 |
|
670 |
video_clips = adjusted_clips
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
# 첫 λ²μ§Έ λΉλμ€μ FPSλ₯Ό κΈ°λ³Έκ°μΌλ‘ μ¬μ©
|
675 |
if output_fps == 0:
|
676 |
output_fps = video_clips[0].fps
|
|
|
31 |
from scipy.io import wavfile
|
32 |
from transformers import pipeline
|
33 |
|
34 |
+
# λΉλμ€ λ°°κ²½μ κ±° κ΄λ ¨ import
|
35 |
from transformers import AutoModelForImageSegmentation
|
36 |
from torchvision import transforms
|
37 |
+
|
38 |
+
# ββ moviepy import ββββββββββββββββββββββββββββββββββββββββββ
|
39 |
+
# editor μλΈλͺ¨λμ΄ μλ κ²½μ° μ°μ μ¬μ©, μμΌλ©΄ μ΅μμ moviepy μ¬μ©
|
40 |
+
try:
|
41 |
+
from moviepy.editor import VideoFileClip, concatenate_videoclips
|
42 |
+
except ImportError:
|
43 |
+
from moviepy import VideoFileClip, concatenate_videoclips
|
44 |
+
|
45 |
+
from moviepy import (
|
46 |
+
vfx, # ν¨κ³Ό ν¨μ (resize λ±)
|
47 |
+
ImageSequenceClip, # μ΄λ―Έμ§ μνμ€ β λΉλμ€
|
48 |
+
concatenate_audioclips, # μ€λμ€ ν΄λ¦½ ν©μΉκΈ°
|
49 |
+
AudioFileClip, # μ€λμ€ ν΄λ¦½
|
50 |
+
CompositeAudioClip # μ€λμ€ ν©μ±
|
51 |
+
)
|
52 |
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
|
53 |
from moviepy.video.VideoClip import ColorClip
|
54 |
+
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
55 |
+
|
56 |
import time
|
57 |
from concurrent.futures import ThreadPoolExecutor
|
58 |
|
59 |
+
|
60 |
|
61 |
# νκ²½ λ³μ μ€μ μΌλ‘ torch.load μ²΄ν¬ μ°ν (μμ ν΄κ²°μ±
)
|
62 |
os.environ["TRANSFORMERS_ALLOW_UNSAFE_DESERIALIZATION"] = "1"
|
|
|
673 |
logging.warning(f"λΉλμ€ ν¬κΈ°κ° μλ‘ λ€λ¦
λλ€. 첫 λ²μ§Έ λΉλμ€ ν¬κΈ°({target_width}x{target_height})λ‘ μ‘°μ ν©λλ€.")
|
674 |
|
675 |
# ν¬κΈ°κ° λ€λ₯Έ λΉλμ€λ€μ μ‘°μ
|
|
|
676 |
adjusted_clips = []
|
677 |
+
for clip, size in zip(video_clips, clip_sizes):
|
678 |
+
if size != (target_width, target_height):
|
679 |
+
# βΆοΈ μ¬κΈ°λ§ μμ
|
680 |
+
adjusted_clip = clip.fx(
|
681 |
+
vfx.resize, # ν¨κ³Ό ν¨μ
|
682 |
+
newsize=(target_width, target_height) # λͺ©ν ν¬κΈ°
|
683 |
+
)
|
684 |
adjusted_clips.append(adjusted_clip)
|
685 |
else:
|
686 |
adjusted_clips.append(clip)
|
687 |
|
688 |
video_clips = adjusted_clips
|
689 |
+
|
|
|
|
|
690 |
# 첫 λ²μ§Έ λΉλμ€μ FPSλ₯Ό κΈ°λ³Έκ°μΌλ‘ μ¬μ©
|
691 |
if output_fps == 0:
|
692 |
output_fps = video_clips[0].fps
|