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