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:

View File

@@ -90,6 +90,8 @@ services:
AUDIO_NORMALIZE_BITRATE: ${AUDIO_NORMALIZE_BITRATE:-192k}
AUDIO_NORMALIZE_CHANNELS: ${AUDIO_NORMALIZE_CHANNELS:-2}
WORKER_MODE: all
NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all}
NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-video,compute,utility}
OPENWEBUI_URL: ${OPENWEBUI_CONTAINER_URL:-http://open-webui:8080}
OPENWEBUI_API_KEY: ${OPENWEBUI_API_KEY}
OPENWEBUI_KB_NAME: ${OPENWEBUI_KB_NAME:-Homelab Library}
@@ -105,6 +107,10 @@ services:
- ${TMP_HOST_DIR:-./tmp}:/tmpdl
- ${MODELS_HOST_DIR:-./models}:/root/.cache/huggingface
- ./app:/app
device_requests:
- driver: nvidia
count: ${NVIDIA_DEVICE_COUNT:-1}
capabilities: [video, compute, utility]
depends_on: [meili, redis, open-webui]
restart: unless-stopped
healthcheck:
@@ -150,6 +156,8 @@ services:
AUDIO_NORMALIZE_BITRATE: ${AUDIO_NORMALIZE_BITRATE:-192k}
AUDIO_NORMALIZE_CHANNELS: ${AUDIO_NORMALIZE_CHANNELS:-2}
WORKER_MODE: transcribe
NVIDIA_VISIBLE_DEVICES: ${NVIDIA_VISIBLE_DEVICES:-all}
NVIDIA_DRIVER_CAPABILITIES: ${NVIDIA_DRIVER_CAPABILITIES:-video,compute,utility}
OPENWEBUI_URL: ${OPENWEBUI_CONTAINER_URL:-http://open-webui:8080}
OPENWEBUI_API_KEY: ${OPENWEBUI_API_KEY}
OPENWEBUI_KB_NAME: ${OPENWEBUI_KB_NAME:-Homelab Library}
@@ -165,6 +173,10 @@ services:
- ${TMP_HOST_DIR:-./tmp}:/tmpdl
- ${MODELS_HOST_DIR:-./models}:/root/.cache/huggingface
- ./app:/app
device_requests:
- driver: nvidia
count: ${NVIDIA_DEVICE_COUNT:-1}
capabilities: [video, compute, utility]
depends_on: [meili, redis, open-webui]
restart: unless-stopped
healthcheck: