Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from moviepy.editor import ImageClip, concatenate_videoclips, AudioFileClip | |
| import tempfile | |
| def merge_images_audio(image_file, audio_file, video_size=(1080, 1920)): | |
| image_duration = 3.5 # Duration for each image in seconds | |
| video_duration = image_duration | |
| def centered_image_clip(img_path, size): | |
| img_clip = ImageClip(img_path.name).resize(video_size) # Resize image to video_size | |
| return img_clip.set_position("center").set_duration(image_duration) | |
| image_clip = centered_image_clip(image_file, video_size) | |
| final_video = concatenate_videoclips([image_clip]) | |
| audio_clip = AudioFileClip(audio_file.name).subclip(0, video_duration) # Trim or loop audio to match video duration | |
| final_video = final_video.set_audio(audio_clip) | |
| output_filename = tempfile.mktemp(suffix=".mp4") | |
| final_video.write_videofile(output_filename, codec='libx264', fps=24) | |
| return "Video created successfully!", output_filename | |
| iface = gr.Interface( | |
| fn=merge_images_audio, | |
| inputs=[ | |
| gr.inputs.File(label="Image File"), # Single file selection | |
| gr.inputs.File(label="Audio File") | |
| ], | |
| outputs=[ | |
| "text", | |
| gr.outputs.File(label="Download Video") # File output without 'type' | |
| ] | |
| ) | |
| iface.launch() | |