
xdltF4HvfjE) saiu do ar. Os DEBs do repositório oficinadotux (16/18/19) e o gist de compilação de 2017 ficam só como histórico no fim. Hoje o caminho é driver proprietário + FFmpeg com ffnvcodec (headers 13.1.15, driver Linux ≥ 610) — e, na maioria das vezes, sem baixar o SDK proprietário.NVENC continua o mesmo bloco de hardware da NVIDIA: tira H.264/HEVC/AV1 da CPU e manda para o ASIC da GPU. O que mudou é o empacotamento. Em 2017 você compilava o FFmpeg contra o SDK. Em 2026 o FFmpeg fala com o driver via nv-codec-headers (MIT). Primeiro confira se o binário que você já tem já lista os encoders; só compile se faltar.
O que mudou desde 2017
- Ubuntu 24.04 LTS traz FFmpeg 6.1.1; o 26.04 LTS traz 8.0.1 (universe).
- O Video Codec SDK atual é o 13.1. Os headers públicos estão em
nv-codec-headers13.1.15 — driver mínimo 610. - Presets antigos (
llhq,slowcomo nome de preset NVENC) deram lugar ap1…p7. - Além de
h264_nvencehevc_nvencexisteav1_nvenc(Ada / RTX 40 e mais novo). - NPP no FFmpeg está deprecado com CUDA > 12.8. A NVIDIA pede
scale_cuda, nãoscale_npp. Evite--enable-libnpp. - O OBS no Linux fala com o NVENC pelo driver. Compilar FFmpeg não é mais pré-requisito para gravar/transmitir no OBS.
Conferir GPU e driver
Sem driver proprietário não há NVENC. Nouveau não conta. Detalhe de como a GPU trabalha: Como funcionam as placas de vídeo.
nvidia-smi
# Driver Version e o nome da GPU. Para headers 13.1: driver ≥ 610.
ffmpeg -hide_banner -encoders | grep nvenc
ffmpeg -hide_banner -decoders | grep cuvid
ffmpeg -hide_banner -hwaccels | grep -E 'cuda|nvdec'
Se aparecer h264_nvenc / hevc_nvenc (e av1_nvenc na Ada+), o FFmpeg do sistema já serve. Instale também as libs de encode/decode do driver:
# Ubuntu
sudo apt install libnvidia-decode libnvidia-encode
# Debian (nomes com sufixo 1)
sudo apt install libnvcuvid1 libnvidia-encode1
Quem ainda não tem o driver:
ubuntu-drivers devices
sudo ubuntu-drivers install
# ou um ramo específico, ex.: sudo apt install nvidia-driver-570
sudo reboot
Atalho: o ffmpeg do Ubuntu
sudo apt update
sudo apt install ffmpeg
ffmpeg -version
ffmpeg -hide_banner -encoders | grep nvenc
Debian/Ubuntu compilam o FFmpeg com libffmpeg-nvenc-dev (só headers MIT). NVENC/NVDEC entram por autodetect; as libs NVIDIA são dependência sugerida, não obrigatória do pacote. Por isso o binário lista os encoders mesmo numa máquina sem GPU — e falha em runtime se o driver não estiver lá.
Se grep nvenc voltar vazio, você pegou um build sem ffnvcodec (snap, binário estático velho, PPA estranho). Aí use o jellyfin-ffmpeg ou compile.
Atalho 2: jellyfin-ffmpeg
O jellyfin-ffmpeg é FFmpeg 7.1.x / 8.1.x já ligado em NVENC, QSV e VA-API. Dá para instalar o pacote sozinho, sem o servidor Jellyfin. Em 2026: jellyfin-ffmpeg7 (7.1.4) e jellyfin-ffmpeg8 (8.1.1).
curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash
sudo apt install jellyfin-ffmpeg7 libnvidia-decode libnvidia-encode
/usr/lib/jellyfin-ffmpeg/ffmpeg -hide_banner -encoders | grep nvenc
O binário mora em /usr/lib/jellyfin-ffmpeg/ffmpeg, não substitui o /usr/bin/ffmpeg do Ubuntu. Use o caminho completo (ou um alias) quando quiser NVENC garantido.
Compilar: receita oficial NVIDIA 13.1
Documentação: Using FFmpeg with NVIDIA GPU Hardware Acceleration (SDK 13.1). Repositórios oficiais do FFmpeg agora estão em code.ffmpeg.org.
Útil quando você quer FFmpeg 8 no 24.04, filtros CUDA, ou um prefixo isolado sem tocar no pacote do sistema.
sudo apt update
sudo apt -y install git build-essential pkg-config nasm clang
libx264-dev libx265-dev libopus-dev libvpx-dev libmp3lame-dev
libass-dev libfreetype6-dev libgnutls28-dev
mkdir -p ~/src && cd ~/src
git clone https://code.ffmpeg.org/FFmpeg/nv-codec-headers.git
cd nv-codec-headers
# driver < 610: git checkout n12.2.72.0
sudo make install
cd ..
git clone https://code.ffmpeg.org/FFmpeg/FFmpeg.git
cd FFmpeg
# master quebra de vez em quando; pin numa release:
# git checkout n8.0.1
./configure --prefix="$PWD/build"
--enable-gpl --enable-nonfree
--disable-static --enable-shared
--nvcc=clang
--enable-libx264 --enable-libx265 --enable-libopus
--enable-libvpx --enable-libmp3lame --enable-libass --enable-gnutls
make -j"$(nproc)"
make install
export PATH="$PWD/build/bin:$PATH"
export LD_LIBRARY_PATH="$PWD/build/lib:${LD_LIBRARY_PATH:-}"
ffmpeg -hide_banner -encoders | grep nvenc
ffmpeg -hide_banner -filters | grep cuda
A flag --enable-nonfree entra porque o FFmpeg trata NVENC como nonfree na hora de redistribuir o binário. Os headers são MIT; o blob proprietário é o driver. Não habilite --enable-libnpp. CUDA runtime não é obrigatório — o FFmpeg usa a driver API.
Para persistir o prefixo local, acrescente no ~/.bashrc:
export PATH="$HOME/src/FFmpeg/build/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/src/FFmpeg/build/lib:${LD_LIBRARY_PATH:-}"
Não instale em /usr por cima do pacote ffmpeg. O prefixo build/ evita brigar com o apt.
Usar os encoders
Pipeline inteiro na GPU (decode CUDA → encode NVENC), sem volta pela RAM:
ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda
-i entrada.mp4
-c:v h264_nvenc -preset p4 -b:v 5M -fps_mode passthrough
-c:a copy
saida.mp4
HEVC (Maxwell 2ª gen+) e AV1 (Ada / RTX 40+):
# HEVC qualidade (arquivo, não live)
ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i entrada.mp4
-c:v hevc_nvenc -preset p6 -tune hq -rc vbr -cq 23 -b:v 0
-c:a copy saida.mkv
# AV1
ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i entrada.mp4
-c:v av1_nvenc -preset p5 -tune hq -rc constqp -qp 28
-c:a copy saida.mkv
Redimensionar na GPU com scale_cuda (substituto do scale_npp):
ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i entrada.mp4
-vf scale_cuda=1280:720:interp_algo=bilinear
-c:v h264_nvenc -preset p4 -b:v 4M -c:a copy saida.mp4
Presets: p1 mais rápido / pior qualidade, p7 mais lento / melhor. p4 é o default. Tune: hq (arquivo), ll / ull (live), uhq (HEVC/AV1, Turing+, mais VRAM).
Várias GPUs: -hwaccel_device 1 o CUDA_VISIBLE_DEVICES=1. Lista: nvidia-smi -L.
OBS Studio
No OBS atual o encoder “NVIDIA NVENC” aparece sozinho quando o driver proprietário está no ar. Não depende do FFmpeg que você compilou. Flatpak do OBS usa o runtime dele: o pacote NVIDIA do Flatpak (org.freedesktop.Platform.GL.nvidia-…) precisa bater com o driver do host.
Na CLI, o equivalente de “gravar a tela com NVENC” continua sendo o FFmpeg; o OBS é a UI. SimpleScreenRecorder ficou para trás — se ainda usa, migre para OBS ou para o próprio FFmpeg.
Hardware, por geração
h264_nvenc— Kepler (GTX 600) em diante.hevc_nvenc— Maxwell 2ª gen (GTX 900) em diante; 10-bit fica decente no Pascal+.av1_nvenc— Ada (RTX 40) e Blackwell (RTX 50).
A trava de 3 sessões simultâneas nas GeForce caiu no driver 456.71 (2020). Se um encode recusar sessão, atualize o driver antes de culpar o FFmpeg.
Histórico (2017)
O fluxo da época — SDK 6/7, FFmpeg 3.2.1, script no gist, DEB para Ubuntu 16/18/19 — está arquivado em:
- gist de compilação (FFmpeg 3.2.1 + SDK 7.0.1)
- oficinadotux (binários 16/18/19)
- gitlab.com/jniltinho/docker-ffmpeg
Não use esses binários em Ubuntu 24.04/26.04. O vídeo do YouTube que acompanhava o post original não está mais disponível.
Resumo: nvidia-smi no ar, ffmpeg -encoders | grep nvenc listando, encode com -hwaccel cuda -hwaccel_output_format cuda e scale_cuda. Compilar só se o pacote do Ubuntu ou o jellyfin-ffmpeg não bastar.