Spaces:
Sleeping
Sleeping
File size: 1,560 Bytes
0660b1b 5b0e95f a0b6e16 b8bab42 5b0e95f 513a44d 5b0e95f a0b6e16 513a44d 5b0e95f 513a44d 5b0e95f 5d3bf28 3bdb854 5d3bf28 5b0e95f 513a44d 5b0e95f 80d6daf b706b1a 5b0e95f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import gradio as gr
from moviepy.editor import ImageSequenceClip
import tempfile
import os
import shutil # μ΄ λΆλΆμ μΆκ°
def images_to_video(image_files):
# μμ λλ ν°λ¦¬ μμ±
temp_dir = tempfile.mkdtemp()
image_paths = []
for i, image_file in enumerate(image_files):
# μ
λ‘λλ νμΌμ μμ νμΌλ‘ μ μ₯
temp_file_path = os.path.join(temp_dir, f"image_{i}.png")
with open(temp_file_path, "wb") as f:
f.write(image_file.read()) # λ°μ΄νΈ λ°μ΄ν°λ₯Ό νμΌλ‘ μ μ₯
image_paths.append(temp_file_path)
# μ΄λ―Έμ§ μνμ€λ‘λΆν° λΉλμ€ ν΄λ¦½ μμ± λ° κΈ°ν λ‘μ§...
# μ΄λ―Έμ§ μνμ€λ‘λΆν° λΉλμ€ ν΄λ¦½ μμ± (κ° μ΄λ―Έμ§μ μ§μ μκ°μ 2μ΄)
clip = ImageSequenceClip(image_paths, fps=0.5) # fps=0.5 => κ° μ΄λ―Έμ§λ 2μ΄ λμ 보μ
# λΉλμ€ νμΌ μ μ₯
output_video_path = os.path.join(temp_dir, "output.mp4")
clip.write_videofile(output_video_path, fps=24) # 24fpsλ‘ μΆλ ₯ λΉλμ€ μ μ₯
# μμ±λ λΉλμ€ νμΌ κ²½λ‘ λ°ν
return output_video_path
return image_paths # μμ λ°νκ°, μ€μ λ‘λ μμ±λ λΉλμ€ νμΌ κ²½λ‘λ₯Ό λ°νν΄μΌ ν¨
# Gradio μΈν°νμ΄μ€ μ μ
with gr.Blocks() as demo:
with gr.Row():
file_input = gr.File(label="Upload images")
video_output = gr.Video(label="Output video")
file_input.change(images_to_video, inputs=file_input, outputs=video_output)
demo.launch()
|