subtify / audio.py
Maximofn's picture
Refactor project structure and update dependencies
e015c08
import os
import ffmpeg
DEBUG=True
def get_audio_from_video(video_path: str, output_folder: str) -> str:
"""
Extract audio from video and save it as mp3.
Args:
video_path (str): Path to the video file
output_folder (str): Path to folder where audio will be saved
Returns:
str: Path to the saved audio file
Raises:
Exception: If video file doesn't exist
Exception: If there's an error extracting the audio
"""
# Validate video exists
if not os.path.exists(video_path):
raise Exception(f"Video file not found: {video_path}")
# Create output folder if it doesn't exist
if not os.path.exists(output_folder):
os.makedirs(output_folder)
try:
# Generate output path
audio_filename = "download_audio.mp3"
audio_path = os.path.join(output_folder, audio_filename)
if DEBUG:
if os.path.exists(audio_path):
return audio_path
# Extract audio using ffmpeg
stream = ffmpeg.input(video_path)
stream = ffmpeg.output(stream, audio_path, acodec='libmp3lame')
ffmpeg.run(stream, overwrite_output=True)
return audio_path
except Exception as e:
raise Exception(f"Error extracting audio from video: {str(e)}")