Spaces:
Running
Running
import os | |
import gradio as gr | |
from moviepy.editor import VideoFileClip | |
from datetime import datetime | |
import time | |
def convert_mp4_to_mp3(video_file_path, output_dir): | |
# MP3 λ³ν κ³Όμ | |
video = VideoFileClip(video_file_path) | |
audio = video.audio | |
output_path = os.path.join(output_dir, os.path.splitext(os.path.basename(video_file_path))[0] + ".mp3") | |
audio.write_audiofile(output_path) | |
audio.close() | |
video.close() | |
return output_path | |
def mp4_to_mp3_converter(video_file): | |
# λΉλμ€ νμΌμ΄ μμ λ μ²λ¦¬ | |
if video_file is None: | |
return "μ€λ₯: μ λ‘λλ λΉλμ€ νμΌμ΄ μμ΅λλ€.", None | |
# νμΌ νμ₯μ μ²΄ν¬ | |
allowed_extensions = ['mp4', 'webm', 'avi', 'mov', 'mkv'] | |
file_extension = os.path.splitext(video_file.name)[1][1:].lower() | |
if file_extension not in allowed_extensions: | |
return f"μ€λ₯: μ§μλμ§ μλ νμΌ νμμ λλ€. λ€μ νμ₯μ μ€ νλμ νμΌμ μ λ‘λνμΈμ: {', '.join(allowed_extensions)}", None | |
# μ μ₯ κ²½λ‘ μ€μ | |
modeltarget = "mp4_to_mp3_conversion" | |
save_path = os.path.join("/home/user/app", modeltarget) | |
os.makedirs(save_path, exist_ok=True) | |
# MP3 λ³ν λ° κ²°κ³Ό λ°ν | |
try: | |
mp3_file_path = convert_mp4_to_mp3(video_file.name, save_path) | |
return f"λ³ν μλ£! MP3 νμΌμ΄ μμ±λμμ΅λλ€.", mp3_file_path | |
except Exception as e: | |
return f"λ³ν μ€ μ€λ₯κ° λ°μνμ΅λλ€: {str(e)}", None | |
# Gradio μΈν°νμ΄μ€ μ€μ | |
iface = gr.Interface( | |
fn=mp4_to_mp3_converter, | |
inputs=gr.File(label="λΉλμ€ νμΌ μ λ‘λ"), | |
outputs=[ | |
gr.Markdown(label="μν"), | |
gr.File(label="λ€μ΄λ‘λ MP3") | |
], | |
title="λΉλμ€μμ μμ± νμΌλ‘ λ³νκΈ°", | |
description="λΉλμ€ νμΌμ MP3 νμμΌλ‘ λ³νν©λλ€.", | |
allow_flagging=False, | |
) | |
if __name__ == "__main__": | |
iface.launch() |