Updating GPU transcoding

This commit is contained in:
2025-09-24 13:01:30 +02:00
parent 4ae6951c9c
commit d8de989c00
2 changed files with 43 additions and 2 deletions

View File

@@ -1467,6 +1467,34 @@ def _resolve_audio_encoder(codec: str) -> str:
return AUDIO_ENCODER_MAP.get(key, codec or "libmp3lame")
def _sanitize_video_preset(encoder: str) -> str | None:
preset = (VIDEO_NORMALIZE_PRESET or "").strip()
if not preset:
return None
enc = (encoder or "").lower()
pl = preset.lower()
if "nvenc" in enc:
allowed = {"p1", "p2", "p3", "p4", "p5", "p6", "p7"}
return pl if pl in allowed else "p5"
if enc in {"libx265", "libx264"}:
allowed = {"ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"}
if pl in allowed:
return pl
if pl.startswith("p") and pl[1:].isdigit():
return "medium"
return "medium"
if enc == "libaom-av1":
allowed = {"good", "best", "realtime"}
if pl in allowed:
return pl
return "good"
return preset
def _ffprobe_streams(path: Path) -> dict[str, str]:
try:
out = subprocess.check_output(
@@ -1603,8 +1631,9 @@ def _normalize_video_file(path: Path, info: dict[str, str]) -> Path:
"-map", "0",
"-c:v", v_encoder,
]
if VIDEO_NORMALIZE_PRESET:
cmd.extend(["-preset", VIDEO_NORMALIZE_PRESET])
preset_val = _sanitize_video_preset(v_encoder)
if preset_val:
cmd.extend(["-preset", preset_val])
if VIDEO_NORMALIZE_TUNE:
cmd.extend(["-tune", VIDEO_NORMALIZE_TUNE])
if VIDEO_NORMALIZE_CRF: