Spaces:
Runtime error
Runtime error
File size: 2,628 Bytes
32d4b56 2a58b6a 32d4b56 2a58b6a 32d4b56 2a58b6a 32d4b56 2a58b6a 32d4b56 2a58b6a 32d4b56 2a58b6a 32d4b56 2a58b6a 32d4b56 2a58b6a 32d4b56 |
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 |
import gradio as gr
from diffusers import StableDiffusionPipeline
import moviepy.editor as mp
import torch
import os
from datetime import datetime
def generate_video(prompt, duration, frame_rate, music_file):
# Initialize the pipeline
device = "cuda" if torch.cuda.is_available() else "cpu"
if device == "cuda":
pipeline = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16).to(device)
else:
# Use float32 when running on CPU
pipeline = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4").to(device)
# Generate frames
num_frames = int(duration * frame_rate)
temp_dir = f"/tmp/{datetime.now().strftime('%Y%m%d%H%M%S')}"
os.makedirs(temp_dir, exist_ok=True)
for i in range(num_frames):
frame = pipeline(prompt).images[0]
frame_path = os.path.join(temp_dir, f"frame_{i:04d}.png")
frame.save(frame_path)
# Create video from frames
video_path = os.path.join(temp_dir, "video.mp4")
video_clip = mp.ImageSequenceClip([os.path.join(temp_dir, f"frame_{i:04d}.png") for i in range(num_frames)], fps=frame_rate)
if music_file:
audio_clip = mp.AudioFileClip(music_file)
audio_clip = audio_clip.set_duration(video_clip.duration)
video_clip = video_clip.set_audio(audio_clip)
video_clip.write_videofile(video_path, codec="libx264")
return video_path
with gr.Blocks() as demo:
gr.Markdown("# AI Dreams & Visions Video Generator")
gr.Markdown("Generate stunning videos from text prompts using AI technology. For inquiries, contact us at [aidreams@aidreams.company](mailto:aidreams@aidreams.company). Follow us on X: [@TheKingofJewelz](https://x.com/TheKingofJewelz).")
with gr.Row():
with gr.Column():
prompt = gr.Textbox(label="Text Prompt", placeholder="Enter your video description here...")
duration = gr.Slider(label="Duration (seconds)", minimum=1, maximum=30, step=1, value=5)
frame_rate = gr.Slider(label="Frame Rate", minimum=1, maximum=60, step=1, value=24)
music_file = gr.Audio(label="Music File (Optional)", type="file")
generate_btn = gr.Button("Generate Video")
with gr.Column():
video_output = gr.Video(label="Generated Video")
download_link = gr.File(label="Download Video")
generate_btn.click(
generate_and_display_video,
inputs=[prompt, duration, frame_rate, music_file],
outputs=[video_output, download_link]
)
if __name__ == "__main__":
demo.launch(share=True)
|