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
|