| import gradio as gr |
| import requests |
|
|
| HF_API_TOKEN = "YOUR_HF_API_TOKEN" |
| API_URL = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-2-1" |
|
|
| headers = {"Authorization": f"Bearer {HF_API_TOKEN}"} |
|
|
| def query(payload): |
| response = requests.post(API_URL, headers=headers, json=payload) |
| return response.content |
|
|
| def generate_video(prompt): |
| os.makedirs("frames", exist_ok=True) |
| for i in range(10): |
| image_bytes = query({"inputs": prompt}) |
| with open(f"frames/frame_{i:03d}.png", "wb") as f: |
| f.write(image_bytes) |
|
|
| create_video_from_frames("frames", "generated_video.mp4", fps=2) |
| return "generated_video.mp4" |
|
|
| def create_video_from_frames(frame_folder, output_path, fps=2): |
| import cv2 |
| images = sorted([img for img in os.listdir(frame_folder) if img.endswith(".png")]) |
| frame = cv2.imread(os.path.join(frame_folder, images[0])) |
| height, width, _ = frame.shape |
| video = cv2.VideoWriter(output_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (width, height)) |
| for img in images: |
| video.write(cv2.imread(os.path.join(frame_folder, img))) |
| video.release() |
|
|
| iface = gr.Interface(fn=generate_video, |
| inputs=gr.Textbox(lines=3), |
| outputs=gr.Video(), |
| title="Text to Video AI") |
|
|
| if __name__ == "__main__": |
| iface.launch() |
|
|