Blog

AV1 no Jellyfin com Intel UHD 770: descodificação e transcodificação

AV1 medido com o ffmpeg do Jellyfin numa Intel UHD 770: descodificação 4K de 10 bits por hardware a 13,5x, HDR10 para SDR a 4,6x e 5 fluxos 4K em simultâneo.

AV1 no Jellyfin com uma Intel UHD 770: velocidade de descodificação e transcodificação medida

Os ficheiros AV1 estão a tornar-se comuns, e muitos servidores Jellyfin ainda correm numa GPU integrada da Intel. A pergunta é simples: uma Intel UHD 770 aguenta o AV1 no Jellyfin, e para quantos fluxos? Medimos com o jellyfin-ffmpeg, a versão do ffmpeg distribuída pelo próprio Jellyfin.

Resultados em resumo

  • A descodificação AV1 é feita na GPU: um ficheiro AV1 4K de 10 bits é descodificado a 13,5x o tempo real, usando cerca de 13% de um núcleo de CPU.
  • AV1 4K HDR para H.264 1080p com conversão HDR→SDR (tone mapping): 4,6x o tempo real para um fluxo.
  • 5 transcodificações 4K HDR→1080p SDR em simultâneo mantêm-se em tempo real.
  • A codificação AV1 é feita no CPU (por exemplo com o SVT-AV1), não nesta GPU. Para o Jellyfin isto raramente importa: os dispositivos que não reproduzem AV1 recebem H.264 ou HEVC, codificados pela GPU.

Condições do teste

ElementoValor
CPU / GPUIntel Core i5-13500, Intel UHD 770 integrada (GPU partilhada)
Máquina virtualLinux (Debian 13), 4 vCPU, 8 GB de RAM, kernel 7.3
ffmpegjellyfin-ffmpeg 7.1.4, do repositório oficial do Jellyfin
Driver multimédiaIntel iHD 25.4.6 (descodificação VAProfileAV1Profile0 suportada)
Fontes30 s, 24 fps, codificadas com SVT-AV1 e grão de película adicionado: 4K 10 bits marcado como HDR10 (PQ / BT.2020, cerca de 39 Mbit/s) e 1080p 8 bits

Os vídeos são sintéticos, por isso um filme real pode comportar-se de forma ligeiramente diferente. Cada valor é o speed= do ffmpeg: 1x significa tempo real, 10x dez vezes mais rápido do que a reprodução.

1. Descodificação AV1: GPU contra CPU

AV1 4K 10 bits, só descodificaçãoVelocidadeCPU usado
Descodificação por hardware (VA-API)13,5x (324 fps)13% de um núcleo
Descodificação por software (dav1d, 4 vCPU)4,0x (97 fps)227%

A descodificação por hardware é mais de três vezes mais rápida e deixa o CPU quase livre, que é o que se pretende quando o Jellyfin, uma base de dados e outros serviços partilham a mesma máquina.

/usr/lib/jellyfin-ffmpeg/ffmpeg -vaapi_device /dev/dri/renderD128 \
  -hwaccel vaapi -hwaccel_output_format vaapi -i filme-av1.mkv -f null -

2. Transcodificar AV1 para os dispositivos que não o reproduzem

É o caso habitual no Jellyfin: uma televisão, um telemóvel mais antigo ou um navegador não reproduz AV1, por isso o Jellyfin converte-o em tempo real. Usámos a mesma cadeia Quick Sync que o Jellyfin (descodificação VA-API, redimensionamento e codificação QSV).

TranscodificaçãoVelocidadeCPU usado
AV1 4K 10 bits → H.264 1080p, tudo na GPU10,3x29% de um núcleo
AV1 4K HDR10 → H.264 1080p SDR com tone mapping (vpp_qsv)4,6x—
AV1 1080p → H.264 720p9,2x19% de um núcleo
AV1 1080p → HEVC 1080p8,5x18% de um núcleo
AV1 4K descodificado no CPU, H.264 codificado na GPU (para comparação)3,8x271%

O tone mapping (converter HDR10 em SDR para um ecrã sem HDR) é o passo mais pesado: reduz a velocidade para cerca de metade. Verificámos as etiquetas de cor da saída (BT.709) para garantir que era mesmo aplicado.

/usr/lib/jellyfin-ffmpeg/ffmpeg \
  -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device qsv=qs@va -filter_hw_device qs \
  -hwaccel vaapi -hwaccel_output_format vaapi -i filme-av1-hdr10.mkv \
  -vf 'hwmap=derive_device=qsv,format=qsv,vpp_qsv=w=1920:h=1080:format=nv12:tonemap=1' \
  -c:v h264_qsv -preset veryfast -b:v 8M -c:a copy saida.mkv

3. Quantos fluxos em simultâneo?

Várias transcodificações AV1 4K HDR10 → H.264 1080p SDR (com tone mapping) a correr ao mesmo tempo; a tabela mostra o fluxo mais lento:

Fluxos em simultâneoFluxo mais lentoTempo real?
14,6xsim
41,37xsim
51,10xsim
60,92xligeiramente abaixo
80,69xnão

Cinco filmes 4K HDR ao mesmo tempo, cada um convertido para 1080p SDR: um limite confortável para uma casa ou um pequeno grupo. Sem tone mapping (fontes SDR ou 1080p), a GPU aguenta muitos mais.

4. E a codificação em AV1?

Se quiser que o Jellyfin produza AV1 (por exemplo, para poupar largura de banda ao enviar para um dispositivo compatível com AV1), a codificação é feita no CPU com o SVT-AV1, que foi aliás como os nossos ficheiros de teste foram criados. Na prática, o Jellyfin raramente precisa disso: reproduz o AV1 diretamente nos dispositivos compatíveis e envia H.264 ou HEVC aos restantes, ambos codificados na GPU.

O que isto significa para um servidor Jellyfin

  • Uma biblioteca em AV1 não é problema nenhum numa Intel UHD 770: a descodificação é feita por hardware e o CPU fica livre.
  • Conte com cerca de 5 transcodificações 4K HDR→SDR em simultâneo, muitas mais em 1080p.
  • Ative o tone mapping só quando for necessário (ecrãs sem HDR): é o passo mais pesado.

Ver também: transcodificação por hardware com Jellyfin e Plex, os comandos ffmpeg Quick Sync que funcionam e o nosso teste de carga da GPU partilhada.

Experimentar

Todos os nossos planos iGPU incluem uma Intel UHD 770 com VA-API e Quick Sync prontos a usar: o Jellyfin instala-se em poucos minutos e encontra a GPU em /dev/dri/renderD128. Ver os planos, a partir de 14,99 € por mês.