Run ffmpeg with error handling.
(ffmpeg: str, args: list[str], desc: str = "")
| 98 | |
| 99 | |
| 100 | def run_ffmpeg(ffmpeg: str, args: list[str], desc: str = "") -> None: |
| 101 | """Run ffmpeg with error handling.""" |
| 102 | cmd = [ffmpeg, "-y", "-hide_banner", "-loglevel", "error", *args] |
| 103 | if desc: |
| 104 | print(f" {desc}...") |
| 105 | result = subprocess.run(cmd, capture_output=True, text=True) |
| 106 | if result.returncode != 0: |
| 107 | print(f" FAILED: {' '.join(cmd)}", file=sys.stderr) |
| 108 | print(f" stderr: {result.stderr}", file=sys.stderr) |
| 109 | raise RuntimeError(f"ffmpeg failed: {result.stderr[:200]}") |
| 110 | |
| 111 | |
| 112 | def download_and_trim( |
no test coverage detected