|
|
import os |
|
|
import sys |
|
|
|
|
|
|
|
|
os.system(f"{sys.executable} -m pip install --upgrade moviepy imageio-ffmpeg ffmpeg-python") |
|
|
|
|
|
from moviepy.editor import ImageClip, AudioFileClip, concatenate_videoclips |
|
|
import gradio as gr |
|
|
|
|
|
def generate_video(images, audio): |
|
|
|
|
|
|
|
|
|
|
|
if len(images) == 0: |
|
|
return "Bitte mindestens ein Bild hochladen." |
|
|
if audio is None: |
|
|
return "Bitte eine Audio-Datei hochladen." |
|
|
|
|
|
|
|
|
image_paths = [] |
|
|
for i, img in enumerate(images): |
|
|
path = f"frame_{i}.png" |
|
|
img.save(path) |
|
|
image_paths.append(path) |
|
|
|
|
|
audio_path = "audio.mp3" |
|
|
audio.save(audio_path) |
|
|
|
|
|
|
|
|
clips = [ImageClip(img_path).set_duration(2) for img_path in image_paths] |
|
|
video = concatenate_videoclips(clips, method="compose") |
|
|
|
|
|
|
|
|
audio_clip = AudioFileClip(audio_path) |
|
|
video = video.set_audio(audio_clip) |
|
|
|
|
|
|
|
|
output_path = "output.mp4" |
|
|
video.write_videofile(output_path, fps=24) |
|
|
|
|
|
return output_path |
|
|
|
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=generate_video, |
|
|
inputs=[ |
|
|
gr.File(file_types=[".png", ".jpg"], file_types_allow_multiple=True, label="Bilder hochladen"), |
|
|
gr.File(file_types=[".mp3"], label="Audio hochladen") |
|
|
], |
|
|
outputs=gr.File(label="Download Video"), |
|
|
title="Faceless AI Video Generator", |
|
|
description="Lade Bilder und eine Audio-Datei hoch, um ein Video zu generieren." |
|
|
) |
|
|
|
|
|
iface.launch() |
|
|
|