Spaces:
Build error
Build error
import os | |
from moviepy.editor import * | |
from pydub import AudioSegment | |
class VideoConverter: | |
def __init__(self, input_file): | |
self.input_file = input_file | |
self.video = None | |
self.audio = None | |
if not os.path.exists(self.input_file): | |
raise FileNotFoundError(f"File not found: {self.input_file}") | |
self.load_video() | |
def load_video(self): | |
try: | |
self.video = VideoFileClip(self.input_file) | |
self.audio = self.video.audio | |
except Exception as e: | |
raise Exception(f"Error loading video: {e}") | |
def convert_video(self, output_file, format): | |
if format not in ['webm', 'wmv', 'mkv', 'mp4', 'avi', 'mpeg', 'vob', 'flv']: | |
raise ValueError(f"Unsupported format: {format}") | |
try: | |
self.video.write_videofile(output_file, codec=format.lower()) | |
print(f"Video converted to {format} format successfully!") | |
return output_file | |
except Exception as e: | |
raise Exception(f"Error converting video: {e}") | |
def convert_audio(self, output_file, format): | |
if format not in ['mp3', 'wav', 'ogg', 'flac', 'aac']: | |
raise ValueError(f"Unsupported format: {format}") | |
try: | |
audio_segment = AudioSegment.from_file(self.input_file, self.audio.codec) | |
audio_segment.export(output_file, format=format.lower()) | |
print(f"Audio converted to {format} format successfully!") | |
return output_file | |
except Exception as e: | |
raise Exception(f"Error converting audio: {e}") | |
def convert_video(input_file, format): | |
try: | |
converter = VideoConverter(input_file) | |
if format in ['webm', 'wmv', 'mkv', 'mp4', 'avi', 'mpeg', 'vob', 'flv']: | |
return None, converter.convert_video(f"output.{format}", format), "Converted video successfully!" | |
elif format in ['mp3', 'wav', 'ogg', 'flac', 'aac']: | |
return converter.convert_audio(f"output.{format}", format), None, "Converted audio successfully!" | |
else: | |
return None, None, "Unsupported format!" | |
except Exception as e: | |
return None, None, str(e) |