39 lines
948 B
Python
39 lines
948 B
Python
import subprocess
|
|
from rich.console import Console
|
|
from dubbing.steps.base import PipelineStep
|
|
|
|
console = Console()
|
|
|
|
|
|
class ExtractAudioStep(PipelineStep):
|
|
name = "Extract audio"
|
|
|
|
def is_cached(self) -> bool:
|
|
return self.paths.source_audio.exists()
|
|
|
|
def clean(self) -> None:
|
|
if self.paths.source_audio.exists():
|
|
self.paths.source_audio.unlink()
|
|
|
|
async def run(self) -> None:
|
|
console.print("[cyan]Extracting audio from video...[/]")
|
|
|
|
subprocess.run(
|
|
[
|
|
"ffmpeg",
|
|
"-y",
|
|
"-i",
|
|
str(self.paths.source_video),
|
|
"-vn",
|
|
"-acodec",
|
|
"libmp3lame",
|
|
"-q:a",
|
|
"2",
|
|
str(self.paths.source_audio),
|
|
],
|
|
capture_output=True,
|
|
check=True,
|
|
)
|
|
|
|
console.print("[green]✓ Audio extracted[/]")
|