File size: 1,289 Bytes
1dd3b98 06ef478 1dd3b98 06ef478 1dd3b98 f15ff5e 1dd3b98 | 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 45 46 47 | # app.py
from fastapi import FastAPI, Request
from pydantic import BaseModel
from fastapi.responses import FileResponse
import uvicorn
from text_to_slides import split_into_slides
from generate_images import generate_images_for_slides
from generate_voice import generate_audio_for_slides
from create_video import create_video
import gradio as gr
app = FastAPI()
class TextInput(BaseModel):
content: str
@app.post("/generate_video/")
async def generate_video(data: TextInput):
text = data.content
try:
slides = split_into_slides(text)
images = generate_images_for_slides(slides)
audios = generate_audio_for_slides(slides)
create_video(slides, images, audios, output_path="final_output.mp4")
return FileResponse("final_output.mp4", media_type="video/mp4", filename="final_output.mp4")
except Exception as e:
return {"error": str(e)}
def generate_video(text):
# your backend processing logic
return "video.mp4" # or return a video file path or URL
interface = gr.Interface(fn=generate_video,
inputs=gr.Textbox(),
outputs=gr.Video())
interface.launch(share=True)
if __name__ == "__main__":
uvicorn.run("app:app", host="0.0.0.0", port=7860, reload=True) |