File size: 1,289 Bytes
4cdfc93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()