Spaces:
Running
Running
from pathlib import Path | |
import subprocess | |
class VideoProcessor: | |
def __init__(self, input_video, output_dir): | |
self.input_video = Path(input_video) | |
self.output_dir = Path(output_dir) | |
self.output_dir.mkdir(parents=True, exist_ok=True) | |
self.temp_audio = self.output_dir / "extracted_audio.wav" | |
self.final_video = self.output_dir / "final_video.mp4" | |
def extract_audio(self): | |
"""Extract audio from video file""" | |
try: | |
subprocess.run([ | |
"ffmpeg", "-i", str(self.input_video), | |
"-vn", "-acodec", "pcm_s16le", "-ar", "44100", | |
str(self.temp_audio) | |
], check=True) | |
print(f"Audio extracted successfully to {self.temp_audio}") | |
return str(self.temp_audio) | |
except subprocess.CalledProcessError as e: | |
print(f"Error extracting audio: {e}") | |
return None | |
def combine_video_audio(self, vocals_path): | |
"""Combine original video with vocals only""" | |
try: | |
subprocess.run([ | |
"ffmpeg", | |
"-i", str(self.input_video), | |
"-i", vocals_path, | |
"-c:v", "copy", | |
"-c:a", "aac", | |
"-map", "0:v:0", | |
"-map", "1:a:0", | |
str(self.final_video) | |
], check=True) | |
return str(self.final_video) | |
except subprocess.CalledProcessError as e: | |
print(f"Error combining video and audio: {e}") | |
return None |