1 points par GN⁺ 2024-02-09 | 1 commentaires | Partager sur WhatsApp

Contribuer par hasard au VSE de Blender

  • Il y a deux mois, j’ai commencé à contribuer un peu de code au Video Sequence Editor (VSE) de Blender.
  • Vous saviez que Blender avait un outil de montage vidéo ? Moi non plus.
  • J’ai commencé à travailler sur le VSE alors que je ne connaissais absolument rien au montage vidéo, aux timelines, aux séquenceurs, à l’étalonnage, à ffmpeg, au mixage audio, etc.

Comment ai-je commencé à travailler sur le VSE « par hasard » ?

  • J’ai décidé d’aller à Amsterdam pour assister à la conférence Unite 2023 de Unity et rendre visite à des amis.
  • Après la conférence, j’ai passé une demi-journée au siège de Blender, où Francesco et Sergey m’ont demandé si je serais prêt à contribuer au VSE.
  • C’est ainsi que j’ai commencé à travailler sur le VSE.

Amélioration du rendu de la timeline

  • La timeline du VSE se trouve en bas de l’image, et environ 3 000 « strips » y sont visibles en même temps.
  • Faire défiler et déplacer la timeline mettait à jour l’interface utilisateur à environ 15 images par seconde.
  • Désormais, elle se met à jour à plus de 60 images par seconde (#115311).

Scopes

  • Le VSE peut afficher des « scopes » typiques comme l’histogramme d’image, la waveform et le vectorscope.
  • Des améliorations ont été apportées à l’histogramme, à la waveform et au vectorscope.

Partie ffmpeg

  • Blender utilise principalement la bibliothèque ffmpeg pour lire et écrire l’audio et la vidéo.
  • libswscale est utilisé pour effectuer la conversion RGB↔YUV des images vidéo.
  • Désormais, l’étape de conversion RGB→YUV est accélérée grâce au multithreading (#116008).

Rééchantillonnage audio

  • Le rééchantillonnage des données de clips audio dans la bibliothèque audio (Audaspace) prenait beaucoup de temps.
  • Un nouveau réglage de qualité de rééchantillonnage « intermédiaire » a été ajouté à Audaspace pour être utilisé lors du rendu (#116059).

Transformation et filtrage d’image

  • Dans le VSE, il est possible de transformer des images, vidéos, textes, scènes, etc. : positionnement, rotation, redimensionnement, et application d’un recadrage supplémentaire.
  • Toutes ces transformations sont effectuées sur le CPU et étaient déjà traitées en multithreading.
Correction des « erreurs d’un demi-pixel »
  • Le code contenait plusieurs « erreurs d’un demi-pixel », qui dans bien des cas se compensaient entre elles ou restaient invisibles.
  • Ces erreurs ont été corrigées (#116628).
Bordures de transparence autour du filtrage bilinéaire
  • Seul le filtrage bilinéaire ajoutait de la transparence autour de l’image résultante.
  • Le « mélange avec la transparence » a désormais été supprimé du code du filtrage bilinéaire (#117717).
Ajout et modification des filtres
  • Les transformations de strips dans le VSE n’avaient pas d’option de filtrage Cubic.
  • Il est désormais possible de choisir entre deux types de filtrage Cubic dans le VSE (#117100, #117517).
  • Une option de filtre « Auto » a été ajoutée et définie comme valeur par défaut (#117853).

Optimisation des effets du VSE

  • Dans de vrais jeux de données vidéo, beaucoup d’effets ne sont pas utilisés, mais certaines choses dans le code ont été repérées puis optimisées.
  • La plupart de ces optimisations ont été réalisées via le multithreading.

Qu’est-ce que tout cela change pour le temps de rendu ?

  • Sur trois jeux de données fournis par Blender Studio, le temps de rendu final des vidéos du VSE sur PC a été environ deux fois plus rapide.

Réflexions sur le travail concret

  • Je ne suis pas certain que tout ce travail représente une « bonne quantité de travail » pour deux mois d’efforts à temps partiel.
  • Cela semble tout de même plutôt correct, sachant que le développeur (moi) ne connaissait rien à ce domaine ni à cette base de code.
  • Au total, 37 pull requests ont été finalisées, relues et fusionnées.

Et maintenant ?

  • Blender 4.1 est passé en bêta et est fonctionnellement « terminé ».
  • Le travail sur Blender 4.2 commence, et je prévois de continuer à travailler sur le VSE.

Avis de GN⁺ :

  1. Cet article partage les améliorations apportées au VSE de Blender et le processus de développement, montrant à quel point il est important de contribuer à un projet open source.
  2. En soulignant qu’un développeur peut apporter une contribution significative même en dehors de son domaine d’expertise, il transmet un message positif qui encourage à relever de nouveaux défis.
  3. Cet article insiste sur l’importance de l’optimisation et des gains de performance dans le développement logiciel, et explique avec des exemples concrets l’impact de ces améliorations sur l’expérience utilisateur réelle et le temps de rendu.

1 commentaires

 
GN⁺ 2024-02-09
Commentaires sur Hacker News
  • Un utilisateur mentionne que la plus grande erreur de sa carrière a été de ne pas avoir su trouver un équilibre entre chercher des solutions mathématiques pour des projets originaux et des projets rémunérés produisant des résultats moyens. Il partage qu’il a eu une occasion d’être payé pour un travail qu’il faisait bénévolement, mais qu’au final il n’a plus du tout travaillé dessus.
  • Un autre utilisateur évoque le cas d’une personne qui, après avoir acquis beaucoup d’expérience sur Unity, a contribué à Blender, et félicite en particulier une modification ayant optimisé l’étape de traitement d’image pour multiplier par quatre la vitesse de calcul.
  • Un utilisateur cite comme tendance préférée de ces dernières années le fait qu’Aras participe à divers projets graphiques open source, y apporte de fortes améliorations de performances et d’autres améliorations, puis passe à d’autres projets.
  • Un autre utilisateur exprime son regret que Musicbee, son lecteur de musique préféré, ne soit pas open source, et dit que si le code source était public, il aimerait contribuer pendant son temps libre en corrigeant de petits problèmes.
  • Un utilisateur mentionne qu’il utilise Blender VSE pour le montage vidéo depuis 2020 et qu’il le considère comme l’éditeur vidéo le plus stable et le plus riche en fonctionnalités sous Linux.
  • Un autre utilisateur partage qu’il voulait utiliser uniquement des outils open source pour son podcast, mais qu’après avoir mis 10 heures à rendre dans Blender une séquence mp4 avec incrustation sur fond vert, il est passé à DaVinci Resolve.
  • Un utilisateur demande de l’aide pour comprendre le sens du titre du billet et se demande s’il s’agit d’une expression à caractère mèmesque.
  • Un autre utilisateur mentionne qu’il serait extrêmement difficile de rendre plus rapide n’importe quelle partie du programme 3D Blender, qu’il considère déjà comme l’application 3D qui démarre le plus vite et répond le plus rapidement.
  • Un utilisateur demande que le titre soit modifié pour être plus clair.
  • Enfin, un utilisateur mentionne que sa première expérience avec le VSE n’a pas été très bonne et partage un lien sur son expérience.