File size: 811 Bytes
45b9636
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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",  # no video
        "-acodec",
        "libmp3lame",
        "-ar",
        "44100",  # sample rate
        "-b:a",
        "96k",  # bitrate
        "-y",
        out,
    ]
    logger.info(" ".join(cmd))
    subprocess.run(cmd, check=True)
    return out