Updating GPU transcoding
This commit is contained in:
@@ -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:
|
||||
|
@@ -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:
|
||||
|
Reference in New Issue
Block a user