Spaces:
Running
on
Zero
Running
on
Zero
File size: 5,963 Bytes
a7438d2 d6e9a60 a7438d2 4269cb2 a7438d2 098905a a7438d2 8c8a286 a7438d2 098905a a7438d2 098905a a7438d2 97bb67c a7438d2 1e26e1c a7438d2 25aca96 1e26e1c 25aca96 1e26e1c 25aca96 9499f0c 97bb67c a7438d2 97bb67c 9d859cb 97bb67c a7438d2 8c8a286 9499f0c a7438d2 4269cb2 a7438d2 5973976 |
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
import gradio as gr
from llm_inference_video import VideoLLMInferenceNode
import random
title = """<h1 align="center">CineGen: AI Video Prompt Architect</h1>
<p align="center">Generate cinematic video prompts with technical specifications</p>"""
def create_video_interface():
llm_node = VideoLLMInferenceNode()
with gr.Blocks(theme='bethecloud/storj_theme') as demo:
gr.HTML(title)
with gr.Row():
with gr.Column(scale=2):
input_concept = gr.Textbox(label="Core Concept/Thematic Input", lines=3)
style = gr.Dropdown(
choices=["Minimalist", "Simple", "Detailed", "Descriptive", "Dynamic",
"Cinematic", "Documentary", "Animation", "Action", "Experimental"],
value="Simple",
label="Video Style"
)
camera_style = gr.Dropdown(
choices=[
"None",
"Steadicam flow", "Drone aerials", "Handheld urgency", "Crane elegance",
"Dolly precision", "VR 360", "Multi-angle rig", "Static tripod",
"Gimbal smoothness", "Slider motion", "Jib sweep", "POV immersion",
"Time-slice array", "Macro extreme", "Tilt-shift miniature",
"Snorricam character", "Whip pan dynamics", "Dutch angle tension",
"Underwater housing", "Periscope lens"
],
value="None",
label="Camera Movement Style"
)
camera_direction = gr.Dropdown(
choices=[
"None",
"Zoom in", "Zoom out", "Pan left", "Pan right",
"Tilt up", "Tilt down", "Orbital rotation",
"Push in", "Pull out", "Track forward", "Track backward",
"Spiral in", "Spiral out", "Arc movement",
"Diagonal traverse", "Vertical rise", "Vertical descent"
],
value="None",
label="Camera Direction"
)
with gr.Column(scale=2):
pacing = gr.Dropdown(
choices=[
"None",
"Slow burn", "Rhythmic pulse", "Frantic energy", "Ebb and flow",
"Hypnotic drift", "Time-lapse rush", "Stop-motion staccato",
"Gradual build", "Quick cut rhythm", "Long take meditation",
"Jump cut energy", "Match cut flow", "Cross-dissolve dreamscape",
"Parallel action", "Slow motion impact", "Ramping dynamics",
"Montage tempo", "Continuous flow", "Episodic breaks"
],
value="None",
label="Pacing Rhythm"
)
special_effects = gr.Dropdown(
choices=[
"None",
"Practical effects", "CGI enhancement", "Analog glitches",
"Light painting", "Projection mapping", "Nanosecond exposures",
"Double exposure", "Smoke diffusion", "Lens flare artistry",
"Particle systems", "Holographic overlay", "Chromatic aberration",
"Digital distortion", "Wire removal", "Motion capture",
"Miniature integration", "Weather simulation", "Color grading",
"Mixed media composite", "Neural style transfer"
],
value="None",
label="SFX Approach"
)
custom_elements = gr.Textbox(label="Custom Technical Elements",
placeholder="e.g., Infrared hybrid, Datamosh transitions")
with gr.Row():
custom_elements = gr.Textbox(label="Custom Elements", scale=3)
with gr.Column(scale=1):
provider = gr.Dropdown(
choices=["SambaNova", "Groq"],
value="SambaNova",
label="LLM Provider"
)
model = gr.Dropdown(
choices=[
"Meta-Llama-3.1-70B-Instruct",
"Meta-Llama-3.1-405B-Instruct",
"Meta-Llama-3.1-8B-Instruct"
],
value="Meta-Llama-3.1-70B-Instruct",
label="Model"
)
prompt_length = gr.Dropdown(
choices=["Short", "Medium", "Long"],
value="Medium",
label="Prompt Length"
)
generate_btn = gr.Button("Generate Video Prompt", variant="primary")
output = gr.Textbox(label="Generated Prompt", lines=12, show_copy_button=True)
def update_models(provider):
models = {
"Groq": ["llama-3.3-70b-versatile"],
"SambaNova": [
"Meta-Llama-3.1-70B-Instruct",
"Meta-Llama-3.1-405B-Instruct",
"Meta-Llama-3.1-8B-Instruct"
]
}
return gr.Dropdown(choices=models[provider], value=models[provider][0])
provider.change(update_models, inputs=provider, outputs=model)
generate_btn.click(
llm_node.generate_video_prompt,
inputs=[input_concept, style, camera_style, camera_direction, pacing, special_effects,
custom_elements, provider, model, prompt_length],
outputs=output
)
return demo
if __name__ == "__main__":
demo = create_video_interface()
demo.launch(share=True) |