Connexion Premium

FFmpeg 9.0 met de nouveau Vulkan à l’honneur

Petit pimousse

FFmpeg 9.0 met de nouveau Vulkan à l’honneur

Un an après la version 8.0, l’équipe du projet FFmpeg passe à la mouture majeure suivante. Avec FFmpeg 9.0, Vulkan est particulièrement à l’honneur avec plusieurs améliorations importantes, notamment avec certains codecs orientés production et/ou post-production.

La nouvelle version, nommée « Lei », propose ainsi le décodage matériel d’APV (Advanced Professional Video) via Vulkan. APV est un codec royalties-free (sans redevance) créé par Samsung et pensé comme alternative ouverte à des formats comme le ProRes d’Apple. Comme toujours avec le décodage matériel, cela signifie que le travail est déchargé du CPU vers le GPU, indépendamment du constructeur, Vulkan étant une API multiplateforme.

Puisque l’on parle du ProRes, FFmpeg 9.0 a également du neuf sur le codec. Une accélération Vulkan est là aussi proposée, en complément d’un support ProRes RAW via VideoToolbox. Les flux ProRes RAW, très lourds et jusqu’ici majoritairement décodés au format logiciel ou via des chemins propriétaires Apple, obtiennent ainsi une voie d’accélération GPU générique, ce qui devrait là aussi avoir des répercussions importantes.

Ces deux ajouts, en plus du nouveau filtre v360_vulkan pour la reprojection vidéo 360° et/ou équirectangulaire, positionnent encore un peu plus FFmpeg comme pipeline GPU indépendant. Il fonctionne à l’identique sur les puces Intel, AMD ou encore NVIDIA, sur tous les systèmes d’exploitation, sans dépendre de SDK (kits de développement) propriétaires comme CUDA, NVENC, AMF ou encore VideoToolbox.

Invisible et omniprésent

Parmi les autres nouveautés, on peut noter la lecture native des WebP animés, des améliorations liées au cadre AMF d’AMD, l’arrivée d’un filtre transpose_cuda (rotation/retournement d’image accéléré CUDA, pour éviter les allers-retours GPU > CPU > GPU), le support et le passthrough des métadonnées dynamiques SMPTE 2094 - 50 pour améliorer la gestion des flux de travail HDR, le décodage HE-AAC 960 pour le contenu DAB+ côté audio, ou encore un nettoyage du code avec la suppression de plusieurs éléments obsolètes, dont le décodeur CELT et le parseur Ogg/CELT.

Comme toujours avec les nouvelles versions de FFmpeg, de nombreux composants sont mis à jour, comme libavutil 61.1.100, libavcodec 63.1.100, libavformat 63.1.100, libavdevice 63.1.100, libavfilter 12.1.100, libswscale 10.1.100 et libswresample 7.1.100.

L’importance de cette nouvelle version ne se révèlera, comme d’habitude, qu’une fois son intégration réalisée dans d’autres projets qui en exploiteront les capacités. Rappelons que FFmpeg, même s’il n’est pas connu généralement du grand public, est une brique d’infrastructure invisible mais omniprésente dans le traitement multimédia au sens large.

Si vous connaissez mal ce projet, il s’agit d’une boite à outil pour coder, décoder, transcoder, muxer, démuxer et filtrer à peu près tous les formats audio/vidéo existants. On le retrouve dans de nombreux logiciels et services connus, dont le plus célèbre est sans doute VLC. FFmpeg joue également un rôle essentiel dans YouTube, HandBrake, OBS Studio, des serveurs multimédia domestiques comme Plex et Jellyfin, Discord, Chrome, Blender ou encore WhatsApp. Certains services commerciaux ayant pignon sur rue, comme Netflix, s’en servent également, mais on ne connait pas la nature précise de cet usage.

Commentaires (6)

votre avatar
Parmi les utilisateurs, il y a aussi avidemux dont j'apprécie la simplicité de l'interface.

Par contre, cette omniprésence de ffmpeg implique un mode commun de défaillance comme avec les flux enregistrés sur la TNT où ffmpeg se plante assez facilement en cas d'erreurs sporadiques. Au lieu de reprendre le fil comme savent le faire les TV, ffmpeg lâche l'affaire et c'est mon seul reproche à ce couteau suisse de la vidéo.

C'est d'autant plus gênant que les enregistreurs TNT utilisent des partitions en FAT32 et génèrent donc des fichier TS de 2 Gio avec pertes légères de données. Je suis parfois obligé de convertir chaque TS en MP4 avant de pouvoir couper les pub et rassembler les morceaux.
votre avatar
S'agissant de sources ouvertes , Netflix ne devrait pas détailler son usage ?
votre avatar
La question étant mal posée, je vais répondre à ce que je pense être le problème soulevé.

On parle de logiciel libre ou open source (= sources ouvertes ?), mais ce qui est important, c'est la licence du logiciel.

FFmpeg suivant la façon dont il est compilé peut être sour licence LGPL version 2.1 ou GPL version 2, la première étant plus souple que la seconde.

Pour la LGPG, le logiciel tant une librairie, il peut être linké à du code qui n'est pas sous LGPL sans qu'on soit obligé de fournir le code source de l'ensemble du programme. Si la librairie est modifiée, il faut fournir bien entendu le code des modifications avec le code de la librairie), mais le code du programme, lui peut avoir une licence propriétaire. Il faut cependant fournir les binaires de la partie non LGPL afin de pouvoir refaire une version du programme si l'on modifie la partie LGPL.

Par contre, pour le GPL, il faut fournir tout code source du programme.

Mais dans les 2 cas, cette fourniture de code source n'est à faire que si le logiciel est distribué à un utilisateur (et pas utilisé sur ses propres machines ou dans le cloud par exemple). Ceci est vrai pour ces versions des deux licences, ce ne serait pas vrai pour du GPL V3 si le logiciel est utilisé par l'utilisateur à distance.

Dans le cas de Netflix, il semble qu'ils l'utilisent pour générer leurs vidéos. Leur logiciel n'est donc pas distribué et ils n'ont pas à fournir le code source même s'ils utilisent la version GPL V2.
votre avatar
Wow merci

Ça me faisait penser à VLC et au Freebox.
Cépourça

Netflix pas distribué et leur app Android et iOS?
votre avatar
Les applications mobiles utilisent probablement une API système pour la lecture de vidéo (je vois mal toutes les applications en ayant besoin inclure les codecs) donc ne sont a priori pas concernées.
Tout une application, même propriétaire, faite pour Ubuntu ou Debian n’embarquera FFmpeg mais indiquera une dépendance sur le paquet ffmpeg dans son .deb.
Après, mes connaissances en développement mobile sont… on va dire « réduites », donc ceux qui font pourront peut-être confirmer ou infirmer.
votre avatar
ffmpeg.org ne répond plus… :kill: