68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
import os
|
|
from moviepy import *
|
|
|
|
def create_video(image_folder, audio_folder, output_video):
|
|
# Get sorted lists of images and audio files
|
|
images = []
|
|
audio_files = []
|
|
for i in range(len([name for name in os.listdir('./images')])):
|
|
images.append(f"./images/{i}.png")
|
|
audio_files.append(f"./audios/{i}.wav")
|
|
|
|
clips = []
|
|
|
|
for img, audio in zip(images, audio_files):
|
|
# Create an ImageClip
|
|
img_path = os.path.join(image_folder, img)
|
|
image_clip = ImageClip(img_path)
|
|
|
|
# Create an AudioFileClip
|
|
audio_path = os.path.join(audio_folder, audio)
|
|
audio_clip = AudioFileClip(audio_path)
|
|
audio_clip = CompositeAudioClip([audio_clip])
|
|
|
|
# Set the duration of the image clip to the duration of the audio clip
|
|
image_clip = image_clip.with_duration(audio_clip.duration)
|
|
|
|
# Set the audio of the image clip
|
|
image_clip.audio = audio_clip
|
|
|
|
# Append the image clip to the list of clips
|
|
clips.append(image_clip)
|
|
|
|
# Concatenate all the clips into a single video
|
|
final_video = concatenate_videoclips(clips, method="compose")
|
|
|
|
# Write the result to a file
|
|
final_video.write_videofile(output_video, codec='libx264', audio_codec='aac', fps=24)
|
|
|
|
"""
|
|
import os
|
|
from moviepy import *
|
|
|
|
def create_video_from_images_and_audio(image_folder, audio_folder, output_video):
|
|
video_files = []
|
|
audio_files = []
|
|
for i in range(len([name for name in os.listdir('./images')])):
|
|
video_files.append(f"./videos/{i}.mp4")
|
|
audio_files.append(f"./audios/{i}.wav")
|
|
|
|
|
|
audio_clip = AudioFileClip(audio_file)
|
|
audio_duration = audio_clip.duration
|
|
|
|
clips = []
|
|
|
|
for video, audio in zip(video_files, audio_files):
|
|
video_clip = VideoFileClip(video_path)
|
|
audio_clip = AudioFileClip(audio_path)
|
|
if video_clip.duration < audio_clip.duration:
|
|
loops_needed = int(audio_clip.duration // video_clip.duration) + 1
|
|
video_clip = video_clip.loop(loops=loops_needed)
|
|
video_clip = video_clip.subclip(0, audio_clip.duration)
|
|
video_clip = video_clip.set_audio(audio_clip)
|
|
clips.append(video_clip)
|
|
|
|
final_video = concatenate_videoclips(clips, method="compose")
|
|
final_video.write_videofile(output_video, codec='libx264', audio_codec='aac', fps=24)
|
|
"""
|