CoolFace
Apppublic

ThreadAbort/AI-Movie-Factory

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
0likes
app.py58 linesDownload Raw Back to root
1import gradio as gr2import moviepy.editor as mp3from diffusers import DiffusionPipeline4import spaces5 6# Load diffusion pipelines7image_pipeline = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo")8video_pipeline = DiffusionPipeline.from_pretrained("stabilityai/stable-video-diffusion-img2vid-xt")9 10@spaces.GPU(duration=120)11def generate_images(prompt, num_images):12  """Generates images using the image pipeline."""13  images = []14  for _ in range(num_images):15    generated_image = image_pipeline(prompt=prompt).images[0]16    images.append(generated_image)17  return images18 19@spaces.GPU(duration=120)20def generate_videos(images):21    """Generates videos from a list of images using the video pipeline."""22    videos = []23    for image in images:24        # Wrap the image in a list as expected by the pipeline25        generated_video = video_pipeline(images=[image]).images[0]26        videos.append(generated_video)27    return videos28 29def combine_videos(video_clips):30  """Combines video clips into a single video using moviepy."""31  final_clip = mp.concatenate_videoclips(video_clips)32  return final_clip33 34def generate(prompt):35  """Generates and combines images and videos."""36  images = generate_images(prompt, 2)37  video_clips = generate_videos(images)38  combined_video = combine_videos(video_clips)39  return combined_video40 41# Gradio interface with improved formatting and video output42interface = gr.Interface(43    fn=generate,44    inputs="text",45    outputs="video",46    title="AI Video Generation",47    description="Enter a prompt to generate a video using diffusion models.",48    css="""49      .output-video {50        width: 100%; /* Adjust width as needed */51        height: 400px; /* Adjust height as desired */52      }53    """,54)55 56# Launch the interface57interface.launch()58