import ffmpeg import os def merge_audio_image(mp3_path, image_path, output_dir, unique_id): # Generate output file path output_path = os.path.join(output_dir, f"{unique_id}.mp4") # Ensure the image file exists if not os.path.isfile(image_path): raise FileNotFoundError(f"Image file not found: {image_path}") # Ensure the audio file exists if not os.path.isfile(mp3_path): raise FileNotFoundError(f"Audio file not found: {mp3_path}") # Create the ffmpeg command to combine image and audio into a video ( ffmpeg .input(image_path) .filter('scale', size='1080x1080', force_original_aspect_ratio='decrease') .pad('1080', '1080', -1, -1) .input(mp3_path) .output(output_path, vcodec='libx264', acodec='aac', strict='experimental', pix_fmt='yuv420p', shortest=None) .run() ) 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()