Blender VSE utilisé par accident
(aras-p.info)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.
libswscaleest 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⁺ :
- 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.
- 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.
- 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
Commentaires sur Hacker News