Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierLe blog de Seboss666

AV1 : ça bouge enfin !

Par : Seboss666
31 mars 2023 à 16:00

La dernière fois que j’avais parlé du super codec du futur, c’était y’a 4 ans, et je disais qu’il fallait attendre encore deux ans pour le voir dans le monde réel. Optimisme et Covid n’étant pas bons amis, il aura fallu pas mal de temps supplémentaire pour que ça se concrétise. Petit panel certainement non exhaustif, mais tout de même…

À l’époque, le codec venait de se montrer dans la lumière pour apparaître dans une première version exploitable. Les ressources nécessaires aussi bien pour l’encodage que le décodage étaient assez énervées, ce qui le rendait inutilisable ou presque dans la pratique en tout cas pour le cas le plus consommateur des usages de ces dernières années, le streaming vidéo, que ce soit pour du contenu à la demande ou en direct.

Le matériel à la fête

Depuis, et donc avec le retard dû au COVID, les choses ont quand même fini par bouger. Dans le domaine du PC, les dernières générations de GPU intègrent non seulement des décodeurs AV1, mais surtout des encodeurs. La cible principale reste le streaming, et le logiciel de référence, OBS, supporte les trois fabricants principaux. Oui parce qu’entre temps, Intel est arrivé dans le marché des cartes graphiques dédiées, très tardivement il est vrai, avec les ARC, et si les performances brutes en jeu sont particulièrement décevantes surtout pour un produit qui a mis plus de deux ans à sortir après son annonce, les performances sur la partie encodage vidéo, notamment si on utilise la petite 380, sont très intéressantes. Et ça d’autant plus qu’AMD et Nvidia se lâchent grave en ce moment avec des gammes complètement hors sol en termes de tarif et de consommation.

Source: Cowcotland

Ces capacités de décodages sont aussi en déploiement depuis deux ans dans plusieurs gammes de laptop, aussi bien ceux équipés en GPU dédiés, évidemment, qu’en GPU intégrés. Et pour rester dans le domaine du logiciel, ça avance un peu partout à petits pas, que ce soit sur un support purement logiciel via différents encodeurs disponibles tous open-source (c’est un peu une des bases de la philosophie du codec en même temps), soit le support des encodeurs matériels qui sont peu à peu disponible. j’évoquais OBS un peu plus tôt, il n’est pas seul, et que ce soit des briques de base comme ffmpeg, libva ou des outils plus complets comme des outils de transcodage type Handbrake ou des éditeurs vidéo (DaVinci, Vegas, Premiere), les navigateurs web d’une manière ou d’une autre arrivent aussi petit à petit à lire le format via le matériel, bref, on est bien désormais. Si tant est qu’on a le matériel pour évidemment.

Le monde du smartphone aussi à droit à son support au moins en décodage dans la majorité des puces sorties depuis 2020, en tout cas celles pour des bidules à plus de 400€, là où les gammes se renouvellent le plus rapidement sur la partie SoC. Snapdragon, Dimensity, Exynos, Tensor, ils y passent tous. Raison pour laquelle Netflix diffuse en AV1 sur Android depuis deux ans maintenant dès que possible. Les avantages attendus sont toujours là : consommation réduite à qualité égale, donc économie de réseau, et surtout, économie en licences parce H264 et H265, ça coûte une burne en tant que diffuseur. Ce mouvement sur les smartphones diffuse aussi désormais à tout le reste des gammes : lecteurs multimedia de salon, et surtout le nouveau cancer, à savoir les smartTV qui sont pratiquement toutes sous Android. Mais là le flou est total, pour savoir ce qu’une TV a dans le ventre en pratique pour le support derrière, c’est pas évident.

Un grand absent cependant : le Raspberry Pi. Le produit phare de la fondation est dans une situation compliquée : la production de la plus populaire des SBC est au plus bas depuis plus de deux ans, avec des conséquences importantes sur les prix et surtout une disponibilité quasi inexistante. La fondation a fait le choix de privilégier des partenaires intégrant les cartes dans leurs produits, souvent à destination du monde industriel, à rebours donc de la cible première qu’est le monde de l’éducation, et par extension des bidouilleurs de tout poil. Et ces difficultés sur la version actuelle de la carte, qui ne supporte pas le format, a repoussé les travaux sur la version future, que le patron a annoncé ne pas sortir avant minimum 2024.

Le support chez les plateformes

Youtube propose déjà de l’AV1 pour les résolutions QHD+, Netflix comme je l’ai dit l’utilise dès que possible en particulier sur Android, Vimeo propose le codec depuis 2019 déjà. Un des plus gros acteurs par contre fait tâche : Twitch est particulièrement en retard. La plateforme d’Amazon ne propose déjà toujours pas de codec plus performant qu’H264, principalement pour des raisons de licences, et les fortes limites sur les débits font que la qualité des streams s’en ressent dès qu’on sort des point&clicks et des just chatting. Le H265 est fortement attendu, mais avec les GPU dernière générations qui supportent tous l’encodage, qui sont même relativement abordables pour les configurations de streams à deux PC (les A380 sont vraiment très intéressantes sur ce point), ils pourraient directement proposer un passage à l’AV1. En tout cas ça serait dans l’intérêt de tout le monde.

Il manque Dailymotion !

BIG UPDATE : alors que je n’avais pas encore fini de mettre en forme l’article, le pavé est tombé dans la mare et va faire mal à Twitch s’ils se réveillent pas bientôt : Youtube a annoncé prendre en charge le streaming en AV1, via RTMPS (parce que HLS c’est bien pour la lecture, mais sinon c’est pas ouf), et OBS 29.1 qui est sorti en beta dans la foulée va prendre en charge directement tout ça. Vu que le matériel pour les streamers est là, c’est pas surprenant.

On est quand même pas débarrassé des brevets

Le retard pris sur le calendrier initial fait que le H265 a malheureusement eu le temps de s’infuser dans beaucoup trop de systèmes, le BluRay en tête. Certes ça devient un marché de niche, notamment pour la 4K/8K, mais le standard Bluray n’est pas prêt d’évoluer pour exploiter le codec ouvert. Il reste aussi utilisé, avec le grand frère H264, pour les appareils/applications ne décodant pas l’AV1 nativement, et même avec la disponibilité désormais dans tous les secteurs le « grand remplacement » ce n’est pas pour demain. Le parc côté smartphones est assez imposant et va le rester pendant encore quelques paires d’années malheureusement, à moins d’avoir l’AV1 dans des puces pour smartphones à pas cher très très rapidement; surtout que ce n’est jamais mis en avant donc pas un critère d’achat ou de renouvellement pour les gens. Pareil pour le parc PC même en matière de lecture uniquement, avant qu’on ait une majorité de matériel AV1-ready, il va s’en passer des années, vu que même les laptops savent encore durer longtemps et qu’il faut les remplacer entièrement pour en bénéficier, contrairement aux PC de bureau ou juste la carte graphique a besoin d’un nouveau challenger. Pareil pour les appareils de salon, même si les consoles récentes sont capables de s’en sortir logiciellement avec l’AV1, pas dit que le reste des lecteurs type player de box internet basculent rapidement vers un support intégré; et une TV ça se change pas tous les deux ans, même si les fabricants essaient de vous convaincre du contraire au mépris de toute considération écologique. Sans parler que les chaînes de télé classiques diffusées par ces biais continuent d’utiliser du H264…

Mais c’est là !

Enfin, en tout cas, on y est, l’AV1 est une réalité tangible pour beaucoup de gens désormais, à l’instar de la fibre optique qui a enfin décollé ces cinq dernières années. Certes avec son lot de problèmes sur la qualité de certaines installations notamment en agglomération. C’est assez rare qu’une initiative aussi ouverte ait vu le jour, même si ce n’est pas seulement pour des raisons techniques ou éthiques mais bien financières et légales, on ne va pas s’en plaindre ?

Stream youtube sans navigateur, dur, mais faisable !

Par : Seboss666
9 août 2021 à 16:30

Quand je ne suis pas en réunion/call/conférence Teams, et même en dehors du boulot, j’ai une tendance facile à laisser traîner un live youtube en mode « radio » (il en existe une foultitude). Mais l’âge du PC, la lourdeur de YouTube (son manque d’optimisation « standard »), font que je cherchais une solution plus légère. J’ai trouvé une solution de geek évidemment…

Ma machine date technologiquement : un Intel Core i5 6300U, ça reste encore vaillant, mais face à l’agression constante d’un Microsoft Teams, et d’un Firefox aux dizaines d’onglets ouverts, certains particulièrement consommateurs (consoles de cloud providers, entre autres), malgré les 16Go de RAM et le Crucial P2, certains moments deviennent pénible. Ajoutez que sous Linux, l’accélération vidéo dans les navigateurs reste problématique, et que malgré les solutions apportées sur le papier, j’ai toujours pas réussi personnellement alors que les plateformes Intel sont pourtant réputées faciles à exploiter. Le load s’envole à tout va, les latences dans la moindre action devient problématique, la seule chose qui reste constante, c’est le shell.

Je n’ai pas de capture d’écran à partager, mais voilà, lors d’un test « au repos », avec juste un onglet Youtube d’ouvert sur une des radios que j’écoute, le load atteint vite les 4/5 avec tous les cœurs à 100%, sur une machine qui n’a que deux cœurs physiques avec HyperTreading. Teams est déjà une purge quand il est tout seul, pareil pour Firefox avec tous les sites qui ne sont maintenant validés qu’avec Chrome (l’impression d’un retour en arrière de 20 ans, mais en remplaçant Microsoft par Google, on se sentirait presque Bill Murray). Je me suis donc mis en tête de chercher des alternatives plus légères, d’autant plus que seul l’audio est ma cible.

Une flopée de déceptions

VLC en tête d’ailleurs. C’est le seul logiciel à qui j’ai pu faire avaler le moteur de décodage vidéo du GPU intégré Intel, il portait donc beaucoup d’espoir. Mais depuis un certain temps, alors que pas mal d’articles, certains datant même de plusieurs années, ou parlant de la version de développement, mentionnent qu’il suffit normalement de lui passer l’URL d’une vidéo pour qu’il s’en charge, pas moyen ici de lui faire avaler celle de mon flux favori.

D’autres recherches m’ont envoyées vers différents logiciels de différents niveaux de finition. Une fois encore, la facilité apportée par AUR dans l’installation des logiciels et de leurs dépendance rend l’expérience de test beaucoup plus simple et rapide. Mais pas le résultat. Certains logiciels ne fonctionnaient pas du tout, d’autres étaient encore plus lourds qu’un navigateur. J’avais pourtant déjà exclus d’emblée toute application Electron, parce que bon, si c’est pour lancer un Chromium et ouvrir un site, autant utiliser Chromium qui est déjà fréquemment ouvert (j’avais déjà parlé de ça dans l’utilisation des proxy Socks). Ce n’est cependant pas ce que je cherchais.

Il y a une application qui a tenu deux minutes avant que je la supprime. Elle paraissait intéressante, mais elle ne supporte pas correctement les flux « stream », et changeait de vidéo au bout de 10 secondes. C’est particulièrement frustrant. Au total ce sont quatre ou cinq applications qui sont passées sur le grill et qui n’ont pas tenu l’objectif. Avec en plus des recherches entrecoupées d’actions liées purement au boulot, et des appels fréquents en ce moment (vacances, départs, on devient vite « seul au monde »), je désespérais de trouver une solution.

Le Graal encore une fois en « console »

Je finis sur une discussion qui parle de youtube-viewer. Quand on cherche juste youtube-viewer sur un moteur de recherche, on tombe sur plusieurs projets, mais celui-ci est en perl (ouais, je troll souvent sur le langage, mais voilà, parfois, ça fait le taf). C’est finalement un gros script, il n’est là que pour manipuler les API YouTube, et passer la vidéo à un lecteur adapté. Les premiers essais avec mplayer échouent (j’ai suivi les exemples dans la discussion), un rapide coup d’œil dans les issues github me confirment que le lecteur n’est plus supporté et que mpv doit lui être préféré; un coup de yay plus tard j’entends enfin mon premier son stable pendant plus d’une minute !

Je ne vais pas détailler toutes les possibilités de youtube-viewer, sachez que si vous comptez exploiter la recherche de vidéos, il faudra générer une clé d’API sur… votre compte YouTube/Google. Eh ouais, l’utilisation en mode « anonyme » ne peut se faire que via le navigateur ou les applications officielles, histoire de bien enregistrer le moindre de vos faits et gestes… Dans mon cas, vu que je passe l’URL directe du flux, ça n’est pas nécessaire, la documentation devrait vous aider.

Le dernier point qui me dérangeait, c’était que ça prenait un onglet dans Guake, et j’en ouvre déjà beaucoup trop 😀 j’ai donc monté un petit prototype de script qui ne sert pas à grand chose à part démarrer youtube-viewer en mode « arrière-plan » :

#!/bin/bash

screen -dmS mpv-youtube youtube-viewer --video-player=mpv --no-video $@

Ah oui, ce n’est pas mentionné, mais il faut installer youtube-dl pour que l’extraction des flux d’une URL fonctionne, il n’est qu’en dépendance optionnelle sur le paquet AUR. Et pour screen, c’est pas non plus installé par défaut. L’avantage, c’est que sous Manjaro/Arch, c’est d’une facilité déconcertante à installer.

C’est du prototype hein, donc ça se limite à dire « lance youtube-viewer, avec le lecteur mpv, sans aucun décodage vidéo, avec l’URL fournie au lancement du script. Le tout dans un screen pour rendre la main à la console. Les plus alertes auront compris qu’il n’y a aucun contrôle de lecture ou de volume du coup. En effet, pour couper le son pendant les appels, je me repose sur pulseaudio, qui a aussi le bon goût de pouvoir envoyer la lecture d’mpv sur la sortie « enceintes » du laptop, pour laisser le casque à Teams. Je n’ai pas besoin de contrôler la lecture, pour une bonne et simple raison…

Réduction du load : achievement unlocked

Je me suis remis dans la configuration du test initial pour mesurer le load : moins de 2, avec mêmes des descentes à presque 1. Le CPU respire et les latences sont réduites dans plusieurs situations, j’ai donc moins de frustrations à l’accumulation de ces micro-attentes qui se répètent à longueur de journée. Par conséquent, le manque de contrôle de la lecture n’est pas un problème fondamental, dans la mesure ou il n’y a plus qu’à couper le son pour ne pas être dérangé, la lecture peut continuer sans avoir d’impact important sur mon quotidien.

Voilà, une grosse astuce qui méritait un peu plus qu’une petite place dans un « astuces diverses » (on vient de dépasser les 1000 mots). Et oui, j’ai encore trouvé une solution qui n’est pas à la portée de tout le monde, mais quand les outils pour monsieur tout le monde deviennent trop pénibles, la console nous sauve tous. Et il n’est pas dit que j’aurais pu trouver une solution simple sous Windows (bon ceci dit, l’accélération vidéo sous Windows, ça fonctionne mieux, alors…).

❌
❌