Skip to content

P2 transcoder: add HW accel nvenc/qsv with CPU fallback (prod-only) #4

Description

@SlavaKuntsov

Phase / Priority / Area

Phase 12 · Priority P2 · Area transcoder (prod-only, Docker на Mac = CPU fallback)

Зависимости

Blocked by: Фаза 10 DONE

Scope

services/transcoder/Dockerfile:4, services/transcoder/app/consumer.py:139, deploy/docker-compose.prod.yml:44, deploy/docker-compose.yml:179

Goal

HW accel 5-10x (prod Linux), локально Docker на MacBook Pro 24GB — остается CPU fallback.

Context (принято)

Хост — MacBook Pro 24GB, запуск в Docker. NVENC (NVIDIA) и QSV (Intel) недоступны в Docker Desktop на Apple Silicon (/dev/dri нет, nvidia runtime нет, jrottenberg/ffmpeg:nvidia amd64 не стартует). Поэтому дефолт — libx264.
HW имеет смысл только на прод Linux с GPU.

Acceptance Criteria

  • env FFMPEG_ENCODER=auto|x264|nvenc|qsv (default auto)
  • auto: nvidia-smi → h264_nvenc -preset p4 -rc vbr иначе /dev/dri → h264_qsv -preset veryfast иначе libx264 -preset veryfast -threads 2/4
  • Лог encoder=h264_nvenc|h264_qsv|libx264
  • Дефолтный Dockerfile остается python:3.14-slim (не форсить jrottenberg), опц. Dockerfile.nvidia / build-arg
  • На Mac Docker всегда libx264

Проверки

2GB → 60-90s с NVENC на GPU-хосте (если есть), CPU fallback make e2e зеленый на Mac, docker build без GPU не ломается

Out of scope

fan-out

Риски / реш. человека

Выбор прод GPU (NVIDIA vs Intel) — решается при деплое, не блокирует локальную разработку. На Mac для HW вне Docker: brew ffmpeg + h264_videotoolbox + make dev-transcoder

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions