migrate to mikroservices architecture, and add more features
This commit is contained in:
28
core/convert.py
Normal file
28
core/convert.py
Normal file
@@ -0,0 +1,28 @@
|
||||
"""Convert any audio file to a WAV with chosen sample rate and channels via ffmpeg."""
|
||||
from __future__ import annotations
|
||||
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def convert_to_wav(
|
||||
input_path: Path,
|
||||
output_wav: Path,
|
||||
sample_rate: int = 44100,
|
||||
channels: int = 2,
|
||||
ffmpeg_path: str = "ffmpeg",
|
||||
) -> None:
|
||||
"""Run ffmpeg to produce a WAV file. Raises RuntimeError on ffmpeg failure."""
|
||||
output_wav.parent.mkdir(parents=True, exist_ok=True)
|
||||
cmd = [
|
||||
ffmpeg_path, "-y", "-hide_banner", "-loglevel", "error",
|
||||
"-i", str(input_path),
|
||||
"-ar", str(sample_rate),
|
||||
"-ac", str(channels),
|
||||
str(output_wav),
|
||||
]
|
||||
result = subprocess.run(cmd, capture_output=True, text=True)
|
||||
if result.returncode != 0:
|
||||
raise RuntimeError(
|
||||
f"ffmpeg failed for {input_path.name}:\n{result.stderr.strip()[:800]}"
|
||||
)
|
||||
Reference in New Issue
Block a user