Auteur Sujet: Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)  (Lu 110997 fois)

0 Membres et 2 Invités sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #144 le: 03 décembre 2022 à 12:16:57 »
salut, sur les videos 8K AV1 VP9 et HEVC tout et lu via le décodage matériel de ma CG (RTX 3070 Ti) par contre la vidéo 8K H264 elle est lue via le décodage CPU et mon via ma CG, c'est la seule vidéo H264 a être lue via CPU et non GPU, c'est pas normal non ?  (screen ou on voit bien quand je commence a lire la vidéo sur les graphiques 5 6 7 et 8 )

Ta carte graphique supporte le décodage 8K (définition 7680 x 4320) en H.264 ? Il est probabble que non.

Quand je vais dans Chrome 108, voire chrome://gpu ou Edge 107 edge://gpu sur un PC Core i7 de 12ᵉ génération (lancé en 2022) avec UHD Graphics 770 sous Windows 11 22H2, je n'ai pas de support hardware au-delà de 4096x4096 pour H.264.

Il faut passer avec VP9, HEVC ou AV1 pour avoir le support de la 8K matériel :


Chrome 108 sous Windows 11 :


Edge 107 sous Windows 11 :


Est-il opportun de proposer une vidéo H.264 en 8K ? J'ai hésité, mais c'est clairement représentatif de rien. On ne ferra pas de 8K en H.264, il faut un codec un peu plus efficace.

Je me demande quel est le support matériel pour VP8. Chrome ne supporte plus l'accélération matérielle pour VP8 ?

Comancheiv

  • Abonné SFR fibre FttH
  • *
  • Messages: 345
  • SFR FTTH 2000/700 - (13)
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #145 le: 03 décembre 2022 à 12:21:15 »
Merci de vos réponses ,  en effet non j'ai que 4096x4096 pour le h264 et 8192x8192 pour le reste

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #146 le: 03 décembre 2022 à 14:10:34 »
À noter que Chrome peut détecter des capacités hardware supérieures à la réalité.

Exemple avec Chrome 108 sur un PC Core i3-4150 à 3,5 GHz de 2014, équipé d'un iGPU Intel HD Graphics 4400.
OS : Windows 11 22H2

Des capacités de décodage matériel HEVC 4K sont détectées, mais cela ne fonctionne pas en réalité. À la première vidéo HEVC (360p), il y a un flash à l'écran et Chrome désactive toute l'accélération matérielle.


dmfr

  • Abonné Orange adsl
  • *
  • Messages: 275
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #147 le: 08 décembre 2022 à 22:51:02 »
Chrome 108 est sortie et normalement le codec HEVC devrait être disponible avec Chrome >= 108.0.5354.0, si le GPU du PC gère HEVC.
Savez-vous pourquoi je ne peux pas lire de vidéos HEVC ?

HEVC n'est supporté par Chrom(ium) qu'avec décodage matériel complet.
Or depuis les dernières version (104/105/106?), il n'y aucune accel hardware sous Linux (complète ou via copie software).

Il ne suffit pas de consulter chrome://gpu
les informations réelles sont dans chrome://media-internals en sélectionnant le player voulu parmi ceux qui ont été créés pour le contenu.

L'information cruciale est sous la clé "kVideoDecoderName"
- VaapiVideoDecoder : décodage matériel total, sans recopie, via une surface GBM en sortie de VA-API. C'est le seul mode qui permet HEVC.
- VdaVideoDecoder : décodage matériel, puis recopie software vers la surface (et probablement resampling YUV > RGB)
- FFmpeg/Vpx/Dav1d : décodage software à 100%

Et donc, pourquoi rien ne fonctionne sous linux ?

A propos du VdaVideoDecoder (disons accel demi-matérielle), il était actif par défaut il y a peu.
Sous réserve des librairies à jour (Mesa, DRI, etc), d'un noyau en bon état, et du harware qui le supporte (Intel c'est sur, AMD probablement, Nvidia j'en sais rien).
Mais récemment chromium a activé par défaut la feature "UseChromeOSDirectVideoDecoder" qui concrètement désactive VdaVD au profit de son successeur : VaapiVideoDecoder

Pourquoi VaapiVideoDecoder ne parvient pas à s'activer sur les linux standards ?
- dans les traces media-internals : "video decoder fallback after initial decode error"
- dans la console : "Could not find SharedImageBackingFactory with params: usage: DisplayRead|Scanout, format: YUV_420_BIPLANAR"
Comprendre : les surfaces GL directes (GBM) proposées par Angle ou Mesa ne supportent pas le NV12, qui est ce que VAAPI produit en sortie.


Solution Vulkan

Lancer chrome avec "--enable-features=Vulkan"
=> VaapiVideoDecoder s'active si la stack graphique supporte Vulkan, mais le rendu est assez dégradé, aucun upscaling/downscaling sur les surfaces Vulkan créées par chrome.
Ca ne se remarque pas trop sur BigBuckBunny, mais sur des lignes plus géométrique c'est très net, les lignes droites "fourmillent".

(c'est clairement la solution d'avenir à moyen terme, supposons que les soucis de rendu seront traités d'ici là)

Solution Minigbm chromium

=> Utiliser le GBM pour ChromeOS (minigbm) et pas celui de Mesa.
Il supporte NV12 et c'est évoqué sur divers sujets,
ex : https://bugs.chromium.org/p/chromium/issues/detail?id=1236697
mais ca ne semble pas fonctionner avec les drivers Gallium (iris_drv), pas chez moi en tout cas

A noter que même si c'était le cas, il faut compiler Chromium en activant ce flag.
Compter 90mn sur un serveur haut de gamme, probablement 8/12h sur un PC standard.

Solution Mesa

On bricole la libgbm de Mesa en la forcant à accepter le format NV12 (GBM_FORMAT_NV12)
L'ajout est trivial :

diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 11a6ba90e66..82727308609 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -528,6 +528,9 @@ static const struct gbm_dri_visual gbm_dri_visuals_table[] = {
      { 16, 16, 16, 16 },
      true,
    },
+   {
+     GBM_FORMAT_NV12, __DRI_IMAGE_FORMAT_NONE,
+   },
 };
 
 static int

En admettant que le hardware derrière sache s'en arranger. C'est le cas avec les GPU Intel, le reste aucune idée.
Il faudra ensuite lancer Chrome en mode EGL direct (ne pas utiliser ANGLE)

Soit :
LD_LIBRARY_PATH="/chemin/vers/libgbm/modifiee" ~/chromium.main/chrome --no-sandbox --disable-features=Vulkan --use-gl=egl

Et VaapiVideoDecoder est actif.
(il fonctionne alors très bien pour toutes les vidéos de ton sujet)




Note : on peut revenir sur l'ancien mode : --disable-features=UseChromeOSDirectVideoDecoder
L'acceleration matérielle revient pour H264, mais toujours pas HEVC.

Note 2 : il semble que sur les dernières builds, chrome ait activé Vulkan par défaut
Peut-être sous certaines conditions, je n'ai pas regardé le détail.
Donc VaapiVideoDecoder en standard pour tout le monde, mais avec les soucis Vulkan cités plus haut.

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #148 le: 09 décembre 2022 à 10:11:57 »
Merci dmr, c'est clair.

HEVC pourrait arriver en 2023 si les distributions Linux font le nécessaire, mais en attendant, je considère qu'il n'y a pas de support HEVC sous Linux.

Pour Edge sous Windows 11, j'ai fait le test via un Windows 11 21H2 mis à jour vers Windows 11 22H2 sur un PC iGPU Intel 12ᵉ génération : Pas de support par d'HEVC dans Edge par défaut.
L'extension HEVC ne semble s'installer par défaut que quand on fait un clean install de Windows 11 22H2 et que l'on a un PC avec support hardware HEVC. Une mise à jour ne permet pas d'avoir l'extension automatiquement (et dans la boutique Microsoft et cherchant HEVC, on ne trouve que l'extension payante).

J'ai mis à jour ma petite image qui récapitule le support HEVC : (il faut peut-être vider le cache du navigateur pour avoir la mise à jour).

Il faudrait que je teste de nouveau Vivaldi, Opera et Samsung Internet pour voir si la version basée sur Chromium 108 apporte HEVC (ce n'était pas le cas avec la version basée sur Chrome 108).



vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #149 le: 10 décembre 2022 à 22:46:01 »
Je pense avoir compris pourquoi Google a rajouté le support du codec vidéo HEVC dans Chrome 107.

Depuis Android 12 (la version stable a été publiée le 4 octobre 2021, mais il commence juste à se généraliser dans les smartphones neufs), HEVC devient le codec utilisé par l'appareil photo pour enregistrer des vidéos sur de plus en plus de modèles (c'est un choix laissé au fabricant, mais Google encourage l'utilisation du HEVC). HEVC est également le codec par défaut des smartphones Pixel de Google.

Il est possible d'accéder à distance à son smartphone depuis un navigateur web (il faut être connecté sur le même réseau local et scanner un QR Code qui apparaît sur le navigateur avec son mobile) avec des applications telles que AirMore et là, impossible de visualiser les vidéos de son téléphone si le navigateur ne prend pas en charge HEVC.

Les paramètres avancés de l'appareil photo d'Android permettent de désactiver HEVC, activé par défaut sur un Pixel 6 sous Android 12 ou Android 13 :



À noter que contrairement à Apple, les photos sont toujours en Jpeg sur Android. Apple utilisé par défaut HEIF, un format d'image basé sur l'encodage d'image réalisée par le codec vidéo HEVC. Le format d'image HEIF n'est pris en charge par aucun navigateur, même pas par Safari. Les formats d'image concurrents à HEIF sont WebP basé sur VP8, AVIF basé sur AV1 et JpegXL. Ce dernier format, qui vise à remplacer le JPEG sur les appareil photos, n'est pas aujourd'hui pris en charge par les navigateurs web dans leurs versions stables et il pourrait ne pas l'être (Google va retirer le code de prise en charge de JpegXL qui était en test).

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #150 le: 11 décembre 2022 à 12:13:01 »
Encodage 8K 4320p - 24 i/s avec le codec vidéo AV1 à 4,9 Mb/s


Taille du fichier : 365 249 793 octets - débit moyen : 4 903 kbit/s (+158% par rapport à la version AV1 2160p à 24 images/sec).
- Conteneur : MP4 (ISO base media file format).
- Audio : Opus à 100 kbit/s stéréo.
- Vidéo : AV1 à 4 797 kbit/s - définition : 8K 7680 x 4320 à 24 images par seconde.
- Niveau / level utilisé : 6.0
(La norme AV1 définit 14 niveaux ou "levels", de 2.0 à 6.3. Un niveau est un ensemble de contraintes pour un flux. Un décodeur qui se conforme à un niveau donné doit être capable de décoder tous les flux binaires qui sont codés pour ce niveau et pour tous les niveaux inférieurs). Les niveaux pouvant être mis en œuvre dépendent de la capacité matérielle.



Upscaling de la version 1080p réalisé avec Nero AI Image Upscaler par oliverx. Encodage HEVC => AV1 réalisé en 2022 par Vivien avec ffmpeg 4.4.3 :
# Vidéo 8K (7680 x 4320) à 24 images par seconde :
ffmpeg -i "201411_blender_big_buck_bunny_24fps_4320p_hevc.mp4" -pix_fmt yuv420p -c:v libaom-av1 -crf 45 -b:v 0 -g 150 -row-mt 1 -tiles 2x1 -threads 8 -cpu-used 4 -c:a libopus -b:a 100k -ac 2 -f mp4 "201411_blender_big_buck_bunny_24fps_4320p_av1.mp4"

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #151 le: 11 décembre 2022 à 12:13:19 »
Encodage 8K 4320p - 24 i/s avec le codec vidéo VP9 à 9,4 Mb/s


Taille du fichier : 699 358 050 octets - débit moyen : 9 387 kbit/s.
- Conteneur : WebM.
- Audio : Opus à 100 kbit/s stéréo.
- Vidéo : VP9 à 9 277 kbit/s - définition : 8K 7680 x 4320 à 24 images par seconde.
- Niveau / level utilisé : 6
(La norme VP9 définit 14 niveaux ou "levels", de 1 à 6.2. Un niveau est un ensemble de contraintes pour un flux. Un décodeur qui se conforme à un niveau donné doit être capable de décoder tous les flux binaires qui sont codés pour ce niveau et pour tous les niveaux inférieurs). Les niveaux pouvant être mis en œuvre dépendent de la capacité matérielle.



Upscaling de la version 1080p réalisé avec Nero AI Image Upscaler par oliverx. Encodage HEVC => VP9 réalisé en 2022 par Vivien avec ffmpeg 5.1 :
# Vidéo 8K (7680 x 4320) à 24 images par seconde :
ffmpeg -i "201411_blender_big_buck_bunny_24fps_4320p_hevc.mp4" -pix_fmt yuv420p -c:v libvpx-vp9 -crf 41 -b:v 0 -g 240 -quality good -speed 2 -tile-columns 3 -threads 16 -c:a libopus -b:a 100k -ac 2 "201411_blender_big_buck_bunny_24fps_4320p_vp9.webm"

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #152 le: 11 décembre 2022 à 12:13:39 »
Encodage 8K 4320p - 24 i/s avec le codec vidéo HEVC (H.265) à 13,8 Mb/s


Taille du fichier : 1 026 569 656 octets - débit moyen : 13 779 kbit/s.
- Conteneur : MP4 (ISO base media file format).
- Audio : AC-3 5.1 à 448 kbit/s.
- Vidéo : HEVC (H.265) - définition : 8K 7680 x 4320 à 24 images par seconde.
- Niveau / level utilisé : 6
(La norme HEVC définit 13 niveaux ou "levels", de 1 à 6.2. Un niveau est un ensemble de contraintes pour un flux. Un décodeur qui se conforme à un niveau donné doit être capable de décoder tous les flux binaires qui sont codés pour ce niveau et pour tous les niveaux inférieurs). Les niveaux pouvant être mis en œuvre dépendent de la capacité matérielle.
Upscaling de la version 1080p réalisé avec Nero AI Image Upscaler par oliverx.  Encodage réalisé en 2021 par oliverx.


vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #153 le: 11 décembre 2022 à 12:13:59 »
Encodage 8K 4320p - 24 i/s avec le codec vidéo H.264 (AVC) profil High à 21,5 Mb/s


Taille du fichier : 1 604 836 958 octets - débit moyen : 21 541 kbit/s.
- Conteneur : MP4 (ISO base media file format).
- Audio : AAC LC à 130 kbit/s stéréo.
- Vidéo : H.264 (AVC) profil High à 21 400 kbit/s - définition : 8K 7680 x 4320 à 24 images par seconde.
- Niveau / level utilisé : 6
(La norme H.264 définit 20 niveaux ou "levels", de 1 à 6.2. Un niveau est un ensemble de contraintes pour un flux. Un décodeur qui se conforme à un niveau donné doit être capable de décoder tous les flux binaires qui sont codés pour ce niveau et pour tous les niveaux inférieurs). Les niveaux pouvant être mis en œuvre dépendent de la capacité matérielle.



Upscaling de la version 1080p réalisé avec Nero AI Image Upscaler par oliverx. Encodage HEVC => H.264 réalisé en 2022 par Vivien avec ffmpeg 4.4.3 :
# Vidéo 8K (7680 x 4320) à 24 images par seconde :
ffmpeg -i "201411_blender_big_buck_bunny_24fps_4320p_hevc.mp4" -pix_fmt yuv420p -c:v libx264 -preset slow -crf 26 -c:a aac -b:a 128k -ac 2 -f mp4 "201411_blender_big_buck_bunny_24fps_4320p_h264-high.mp4"

dmfr

  • Abonné Orange adsl
  • *
  • Messages: 275
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #154 le: 11 décembre 2022 à 22:34:02 »
HEVC pourrait arriver en 2023 si les distributions Linux font le nécessaire, mais en attendant, je considère qu'il n'y a pas de support HEVC sous Linux.

Plutôt google/chromium à vrai dire, car les distributions ont déjà fait ce qu'il faut.
Très peu probable que Mesa autorise le NV12 via GBM, car c'est totalement hors standard.

Et ca bouge un peu :
https://bugs.chromium.org/p/chromium/issues/detail?id=1236697
Malheureusement pas dans le bon sens, car pour le moment chromium a désactivé par défaut tout accel matérielle sous linux.
Il faut --enable-features=VaapiVideoDecodeLinuxGL pour forcer l'activation (en admettant qu'on ai bricolé le GBM)
Peut-être en prévision d'une refonte EGL/Vulkan/ANGLE qui semble avoir commencé (il y a eu du ménage dernièrement).

Si on compare avec MPV par exemple :

- MPV sait faire du VAAPI par EGL sous linux sans bricole GBM
car il décompose NV12 en R8+GR88 (qui sont supportés en standard).
Il faudrait donc que chromium implémente un pipeline équivalent dédié Linux, ce qui existait pour Fushian, mais qu'ils ont supprimé dernièrement (au profit surement d'un GBM "maison")

- MPV sait faire du VAAPI par Vulkan avec un downscaling propre
Mais MPV utilise la libplacebo pour Vulkan, tandis que Chromium utilise ANGLE ou direct (pas sûr sur ce point)
Il est peut-être prévu d'implémenter dans ANGLE un équivalent.

Comme si ca ne suffisait pas, en cours :

A suivre.

vivien

  • Administrateur
  • *
  • Messages: 47 183
    • Twitter LaFibre.info
Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K (4320p)
« Réponse #155 le: 12 décembre 2022 à 21:43:08 »
J'ai trouvé un bug étrange avec ffmpeg 5.1 (en ré-encodant les vidéos) : Avec cette nouvelle version majeure, j'ai des plantages systématiques pour l'encodage de vidéo 8K (7680 x 4320) en H.264 et AV1. Par contre, pas de problème avec VP9 en 8K (et cela passe en H.264 et AV1 dans les résolutions plus basses) !

Curieux, j'ai testé avec ffmpeg 4.4.3 : l'encodage 8K H.264 et AV1 fonctionne.

Les lignes de commandes utilisées :

# Vidéo H.264 8K (7680 x 4320) à 24 images par seconde :
ffmpeg -i "201411_blender_big_buck_bunny_24fps_4320p_hevc.mp4" -pix_fmt yuv420p -c:v libx264 -preset slow -crf 26 -c:a aac -b:a 128k -ac 2 -f mp4 "201411_blender_big_buck_bunny_24fps_4320p_h264-high.mp4"

# Vidéos AV1 8K (7680 x 4320) 24 images par seconde :
ffmpeg -i "201411_blender_big_buck_bunny_24fps_4320p_hevc.mp4" -pix_fmt yuv420p -c:v libaom-av1 -crf 45 -b:v 0 -g 150 -row-mt 1 -tiles 2x1 -threads 8 -cpu-used 4 -c:a libopus -b:a 100k -ac 2 -f mp4 "201411_blender_big_buck_bunny_24fps_4320p_av1.mp4"

# Vidéos VP9 8K (7680 x 4320) 24 images par seconde :
ffmpeg -i "201411_blender_big_buck_bunny_24fps_4320p_hevc.mp4" -pix_fmt yuv420p -c:v libvpx-vp9 -crf 41 -b:v 0 -g 240 -quality good -speed 2 -tile-columns 3 -threads 16 -c:a libopus -b:a 100k -ac 2 "201411_blender_big_buck_bunny_24fps_4320p_vp9.webm"