File size: 1,761 Bytes
53c54f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
48
49
50
51
52
53
54
import gradio as gr
import requests

API_URL = "https://rahul7star-FramePack-F1-DiffusionForce.hf.space/api/generate/"

def call_framepack_api(input_image, prompt, t2v, seed, seconds):
    files = {}
    data = {
        "prompt": prompt,
        "t2v": str(t2v).lower(),
        "seed": seed,
        "total_second_length": seconds,
    }

    if input_image:
        files["input_image"] = ("input.png", input_image, "image/png")

    try:
        response = requests.post(API_URL, data=data, files=files)
        if response.status_code == 200:
            result = response.json()
            video_url = result.get("video_url")
            preview_url = result.get("preview_image_url")
            return video_url, preview_url
        else:
            return f"API Error: {response.status_code}", None
    except Exception as e:
        return str(e), None

with gr.Blocks() as demo:
    gr.Markdown("## FramePack API Client")

    with gr.Row():
        input_image = gr.Image(type="file", label="Input Image (optional)", sources=["upload"])
        with gr.Column():
            prompt = gr.Textbox(label="Prompt", placeholder="Describe the scene")
            t2v = gr.Checkbox(label="Text-to-Video", value=True)
            seed = gr.Number(label="Seed", value=31337, precision=0)
            seconds = gr.Slider(label="Video Length (seconds)", minimum=1, maximum=10, value=3)

    generate_btn = gr.Button("Generate")

    with gr.Row():
        video_output = gr.Video(label="Generated Video", autoplay=True)
        preview_output = gr.Image(label="Preview Image")

    generate_btn.click(
        fn=call_framepack_api,
        inputs=[input_image, prompt, t2v, seed, seconds],
        outputs=[video_output, preview_output]
    )

demo.launch()