File size: 1,346 Bytes
8e701c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
import os
import gradio as gr
import datetime
from gtts import gTTS
from moviepy.editor import ImageClip, AudioFileClip

def generate_image(prompt):
    return f"🖼️ Image generated for: {prompt}"

def generate_video(prompt, duration):
    img_path = "temp.jpg"
    with open(img_path, "wb") as f:
        f.write(b"\x00")  # placeholder image

    tts = gTTS(text=prompt, lang="en")
    audio_path = "speech.mp3"
    tts.save(audio_path)

    img_clip = ImageClip(img_path, duration=duration)
    audio_clip = AudioFileClip(audio_path)
    img_clip = img_clip.set_audio(audio_clip)

    video_path = "output.mp4"
    img_clip.write_videofile(video_path, fps=24)

    return video_path

def process_request(prompt, duration, request: gr.Request):
    img = generate_image(prompt)
    vid = generate_video(prompt, duration)
    return vid, img, f"🎥 Public mode (no limits in backup)."

with gr.Blocks() as demo:
    gr.Markdown("# 🎬 Backup App – Video Generator with Narration")

    prompt = gr.Textbox(label="Prompt (Journal Text)")
    duration = gr.Slider(5, 60, value=10, step=1, label="Duration (seconds)")
    btn = gr.Button("Generate Video")
    output_vid = gr.Video()
    output_img = gr.Textbox()
    status = gr.Markdown()
    btn.click(process_request, [prompt, duration], [output_vid, output_img, status])

demo.launch()