Spaces:
Sleeping
Sleeping
| 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() | |