Blog

AV1 dans Jellyfin sur Intel UHD 770 : vitesses de décodage et de transcodage mesurées

AV1 mesuré avec le ffmpeg de Jellyfin sur un Intel UHD 770 : décodage 4K 10 bits matériel à 13,5x le temps réel, transcodage HDR10 vers SDR à 4,6x, 5 flux 4K simultanés.

AV1 dans Jellyfin sur Intel UHD 770 : vitesses de décodage et de transcodage mesurées

Les fichiers AV1 se généralisent, et beaucoup de serveurs Jellyfin tournent sur un GPU Intel intégré. La question est simple : un Intel UHD 770 tient-il l’AV1 pour Jellyfin, et pour combien de flux ? Nous l’avons mesuré avec jellyfin-ffmpeg, le ffmpeg fourni par Jellyfin lui-même.

Résultats en bref

  • Le décodage AV1 se fait sur le GPU : un fichier AV1 4K 10 bits se décode à 13,5x le temps réel en utilisant environ 13 % d’un cœur de CPU.
  • AV1 4K HDR vers H.264 1080p avec conversion HDR→SDR : 4,6x le temps réel pour un flux.
  • 5 transcodages 4K HDR→1080p SDR simultanés restent en temps réel.
  • L’encodage AV1 se fait sur le CPU (par exemple avec SVT-AV1), pas sur ce GPU. Pour Jellyfin, c’est rarement utile : les appareils qui ne lisent pas l’AV1 reçoivent du H.264 ou du HEVC, encodés par le GPU.

Conditions du test

ÉlémentValeur
CPU / GPUIntel Core i5-13500, Intel UHD 770 intégré (GPU partagé)
Machine virtuelleLinux (Debian 13), 4 vCPU, 8 Go de RAM, noyau 7.3
ffmpegjellyfin-ffmpeg 7.1.4, dépôt officiel Jellyfin
Pilote médiaIntel iHD 25.4.6 (décodage VAProfileAV1Profile0 pris en charge)
Sources30 s, 24 i/s, encodées avec SVT-AV1 et du grain ajouté : 4K 10 bits marquée HDR10 (PQ / BT.2020, environ 39 Mbit/s) et 1080p 8 bits

Les vidéos sont synthétiques : un vrai film peut se comporter un peu différemment. Chaque chiffre est la valeur speed= de ffmpeg : 1x = temps réel, 10x = dix fois plus vite que la lecture.

1. Décodage AV1 : GPU contre CPU

AV1 4K 10 bits, décodage seulVitesseCPU utilisé
Décodage matériel (VA-API)13,5x (324 i/s)13 % d’un cœur
Décodage logiciel (dav1d, 4 vCPU)4,0x (97 i/s)227 %

Le décodage matériel est plus de trois fois plus rapide et laisse le CPU presque libre : c’est ce qu’on veut quand Jellyfin, une base de données et d’autres services partagent la machine.

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

2. Transcoder l’AV1 pour les appareils qui ne le lisent pas

C’est le cas courant dans Jellyfin : une télé, un vieux téléphone ou un navigateur ne lit pas l’AV1, alors Jellyfin le convertit à la volée. Nous avons utilisé la même chaîne Quick Sync que Jellyfin (décodage VA-API, redimensionnement et encodage QSV).

TranscodageVitesseCPU utilisé
AV1 4K 10 bits → H.264 1080p, tout sur le GPU10,3x29 % d’un cœur
AV1 4K HDR10 → H.264 1080p SDR avec tone mapping (vpp_qsv)4,6x—
AV1 1080p → H.264 720p9,2x19 % d’un cœur
AV1 1080p → HEVC 1080p8,5x18 % d’un cœur
AV1 4K décodé par le CPU, H.264 encodé par le GPU (pour comparer)3,8x271 %

Le tone mapping (convertir le HDR10 en SDR pour un écran non HDR) est l’étape la plus coûteuse : il divise la vitesse par deux environ. Nous avons vérifié les métadonnées de couleur en sortie (BT.709) pour être sûrs qu’il était bien appliqué.

/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 film-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 sortie.mkv

3. Combien de flux en même temps ?

Plusieurs transcodages AV1 4K HDR10 → H.264 1080p SDR (avec tone mapping) en même temps ; le tableau donne la vitesse du flux le plus lent :

Flux simultanésFlux le plus lentTemps réel ?
14,6xoui
41,37xoui
51,10xoui
60,92xjuste en dessous
80,69xnon

Cinq films 4K HDR en même temps, chacun converti en 1080p SDR : une limite confortable pour un foyer ou un petit groupe. Sans tone mapping (sources SDR ou 1080p), le GPU en tient bien plus.

4. Et l’encodage en AV1 ?

Si vous voulez que Jellyfin produise de l’AV1 (par exemple pour économiser de la bande passante vers un appareil compatible), l’encodage se fait sur le CPU avec SVT-AV1 : c’est d’ailleurs ainsi que nos fichiers de test ont été créés. En pratique, Jellyfin en a rarement besoin : il lit l’AV1 directement sur les appareils compatibles et envoie du H.264 ou du HEVC aux autres, encodés par le GPU.

Ce que ça veut dire pour un serveur Jellyfin

  • Une bibliothèque en AV1 ne pose aucun problème sur un Intel UHD 770 : le décodage est matériel et le CPU reste libre.
  • Comptez environ 5 transcodages 4K HDR→SDR simultanés, bien plus en 1080p.
  • N’activez le tone mapping que si nécessaire (écrans non HDR) : c’est l’étape la plus coûteuse.

À lire aussi : transcodage matériel avec Jellyfin et Plex, les commandes ffmpeg Quick Sync qui marchent et notre test de charge du GPU partagé.

Essayer

Toutes nos offres iGPU incluent un Intel UHD 770 avec VA-API et Quick Sync prêts à l’emploi : Jellyfin s’installe en quelques minutes et trouve le GPU sur /dev/dri/renderD128. Voir les offres, à partir de 14,99 € par mois.