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
| Elemento | Valor |
|---|---|
| CPU / GPU | Intel Core i5-13500, Intel UHD 770 integrada (GPU partilhada) |
| Máquina virtual | Linux (Debian 13), 4 vCPU, 8 GB de RAM, kernel 7.3 |
| ffmpeg | jellyfin-ffmpeg 7.1.4, do repositório oficial do Jellyfin |
| Driver multimédia | Intel iHD 25.4.6 (descodificação VAProfileAV1Profile0 suportada) |
| Fontes | 30 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ção | Velocidade | CPU 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ção | Velocidade | CPU usado |
|---|---|---|
| AV1 4K 10 bits → H.264 1080p, tudo na GPU | 10,3x | 29% de um núcleo |
AV1 4K HDR10 → H.264 1080p SDR com tone mapping (vpp_qsv) | 4,6x | — |
| AV1 1080p → H.264 720p | 9,2x | 19% de um núcleo |
| AV1 1080p → HEVC 1080p | 8,5x | 18% de um núcleo |
| AV1 4K descodificado no CPU, H.264 codificado na GPU (para comparação) | 3,8x | 271% |
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âneo | Fluxo mais lento | Tempo real? |
|---|---|---|
| 1 | 4,6x | sim |
| 4 | 1,37x | sim |
| 5 | 1,10x | sim |
| 6 | 0,92x | ligeiramente abaixo |
| 8 | 0,69x | nã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.