Spaces:
Sleeping
Sleeping
File size: 1,564 Bytes
8e8779d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
from moviepy.editor import *
import os
def merge_audio_image(mp3_path, image_path, output_dir, unique_id):
# Load the image
image_clip = ImageClip(image_path)
# Load the audio
audio_clip = AudioFileClip(mp3_path)
# Set the duration of the image clip to match the audio duration
image_clip = image_clip.set_duration(audio_clip.duration)
# Resize the image clip to Instagram's square dimensions (1080, 1080)
image_clip = image_clip.resize((1080, 1080))
# Set the audio to the image clip
final_clip = image_clip.set_audio(audio_clip)
# Generate output file path
output_path = os.path.join(output_dir, f"{unique_id}.mp4")
# Write the output video file
final_clip.write_videofile(output_path, codec='libx264', audio_codec='aac')
return output_path
# Example usage:
def main():
# Example paths (adjust as necessary)
processed_audio_storage = {}
unique_id = 'example_id'
output_path1 = '/path/to/processed_audio.mp3' # Replace with actual path
processed_audio_storage[unique_id] = output_path1
mp3_path = processed_audio_storage[unique_id]
image_path = 'singer.jpg' # Ensure this image is in the same directory as this script
output_dir = './' # Or specify a different directory
# Generate MP4 and get the output path
mp4_path = merge_audio_image(mp3_path, image_path, output_dir, unique_id)
print(f"Generated video at: {mp4_path}")
if __name__ == '__main__':
main()
|