import os import sys # --- Sicherstellen, dass MoviePy installiert ist --- 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): # images: Liste von hochgeladenen Bild-Dateien # audio: hochgeladene Audio-Datei if len(images) == 0: return "Bitte mindestens ein Bild hochladen." if audio is None: return "Bitte eine Audio-Datei hochladen." # Temporäre Pfade speichern 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) # Video erstellen (jede Bild-Clip 2 Sekunden) clips = [ImageClip(img_path).set_duration(2) for img_path in image_paths] video = concatenate_videoclips(clips, method="compose") # Audio einfügen audio_clip = AudioFileClip(audio_path) video = video.set_audio(audio_clip) # Video speichern output_path = "output.mp4" video.write_videofile(output_path, fps=24) return output_path # --- Gradio Interface --- 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()