Spaces:
Running
Running
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() | |