|
import subprocess, uuid, os |
|
from logging_config import logger |
|
|
|
|
|
def clip(source_path: str, start: float, end: float, out_dir: str = "/tmp") -> str: |
|
"""Extract an audio clip from source_path between start and end seconds. |
|
|
|
Returns path to generated mp3 file inside out_dir. |
|
""" |
|
out = os.path.join(out_dir, f"{uuid.uuid4()}.mp3") |
|
cmd = [ |
|
"ffmpeg", |
|
"-hide_banner", |
|
"-loglevel", |
|
"error", |
|
"-ss", |
|
str(start), |
|
"-to", |
|
str(end), |
|
"-i", |
|
source_path, |
|
"-vn", |
|
"-acodec", |
|
"libmp3lame", |
|
"-ar", |
|
"44100", |
|
"-b:a", |
|
"96k", |
|
"-y", |
|
out, |
|
] |
|
logger.info(" ".join(cmd)) |
|
subprocess.run(cmd, check=True) |
|
return out |
|
|