from moviepy.editor import ImageClip, AudioFileClip | |
def animate_scene(image_path, audio_path, idx): | |
audio = AudioFileClip(audio_path) | |
duration = audio.duration | |
image_clip = ( | |
ImageClip(image_path) | |
.set_duration(duration) | |
.set_audio(audio) | |
.resize(height=720) | |
.fx(lambda clip: clip.crossfadein(1).crossfadeout(1)) | |
.zoom_in(1.05) | |
) | |
out_path = f"assets/video/scene_{idx}.mp4" | |
image_clip.write_videofile(out_path, fps=24, audio_codec="aac", verbose=False, logger=None) | |
return out_path |