Spaces:
Build error
Build error
File size: 2,453 Bytes
50695f9 8278bd0 50695f9 fc72765 50695f9 ca390ae 50695f9 8278bd0 50695f9 2adc529 50695f9 2adc529 50695f9 2adc529 50695f9 2adc529 |
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
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 = AudioFileClip(self.input_file)
except Exception as e:
raise Exception(f"Error loading video: {e}")
def convert_video(self, output_file, format):
video_codecs = {'webm': 'libvpx', 'wmv': 'wmv2', 'mkv': 'libx264', 'mp4': 'libx264', 'avi': 'libxvid', 'mpeg': 'mpeg2video', 'vob': 'mpeg2video', 'flv': 'flv'}
if format not in video_codecs:
raise ValueError(f"Unsupported format: {format}")
try:
self.video.write_videofile(output_file, codec=video_codecs[format.lower()], threads=4)
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}")
if self.audio is None:
raise Exception("No audio stream found in the input file")
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 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), "Converted audio successfully!"
else:
return None, "Unsupported format!"
except Exception as e:
return None, str(e) |