This commit is contained in:
urieljarethbusiness-cpu
2026-05-17 10:14:14 -06:00
parent d8773b2508
commit 64b3d15b90
61 changed files with 7612 additions and 0 deletions
@@ -0,0 +1,46 @@
from __future__ import annotations
import subprocess
from pathlib import Path
from backend.app.services.processors.audio_processor import AudioProcessor
from backend.app.services.processors.base import ProcessedContent
class VideoProcessor:
def __init__(self, tmp_dir: Path):
self.tmp_dir = tmp_dir
def process(self, path: Path) -> ProcessedContent:
self.tmp_dir.mkdir(parents=True, exist_ok=True)
audio_path = self.tmp_dir / f"{path.stem}.wav"
try:
subprocess.run(
[
"ffmpeg",
"-y",
"-i",
str(path),
"-vn",
"-acodec",
"pcm_s16le",
"-ar",
"16000",
"-ac",
"1",
str(audio_path),
],
check=True,
capture_output=True,
text=True,
)
processed = AudioProcessor().process(audio_path)
processed.title = f"Transcripcion {path.stem}"
processed.processor = "ffmpeg+deepgram"
return processed
except FileNotFoundError as exc:
raise RuntimeError("ffmpeg no esta instalado o no esta disponible en PATH") from exc
except subprocess.CalledProcessError as exc:
raise RuntimeError(f"No se pudo extraer audio del video: {exc.stderr}") from exc
finally:
audio_path.unlink(missing_ok=True)