mardi 9 septembre 2008

Blender et l'AVCHD, vers une chaine de production complète !


Heureux propriétaire d'un camescope Sony HDR-SR12, voilà plus de deux mois que je me casse la tête (comme à mon avis 99 % des utilisateurs de camescope de ce type) pour monter directement à partir des fichiers AVCHD enregistrer sur le disque dur de la bête, soit en mode natif, soit en passant par un proxy générer de manière automatique. Ayant trouver une solution temporaire en passant par une conversion via FFMPEG, puis un montage dans Cinelerra, voilà que je découvre le projet "BlenderAVC". Rien que le titre ça donne envie !

Alors que j'avais également réussi quelques import et conversion via le couple Avisynth / Virtualdub, voilà que nos amis du groupe "Open Filmmaking" jette un énorme pavé dans la marre. Le package de type "binary" pour Windows qu'ils fournissent, composé entre autres de Blender 2.47, FFMPEG, et AVISynth permettent de charger directement dans Blender les fichiers .MTS tout droit sortie du camescope et de les monter dans l'excellent module de montage "Séquenceur" de Blender, qui je vous le rappelle à entièrement était redesigné dernièrement.

Un convertisseur programmé en Python avec une interface codé en Tk permet de créer de manière complètement automatique l'arborescence contenant : les fichiers MTS natifs, leur proxies crée via FFMPEG qui se lance en tâche de fond ainsi qu'un MPEG de preview si on le désire et les fichiers XML permettant de linker les MTS à leur proxies.

L'interface est à la porté d'un enfant de 5 ans ! Et tout se fait automatiquement. Il suffit ensuite dans Blender de charger le média via son script .AVS (généré par AVISynth) dans le séquenceur avec un clip de type "Movie+Audio" et de le monter sur la Timeline. En cochant la case "Proxy" et en passant en mode 25 % (si votre proxy vaut 25% de la taille originale) dans les préférences de rendu, le media HD est automatiquement remplacé par sa version allégé, préalablement converti par FFMPEG en séquence JPEG. Sur ma machine, FFMPEG converti mes fichiers à la cadence de 26 images secondes, soit un micropoil plus vite que le temps réel. Cependant, un seul des quatre coeur de mon processeur Quad Core est utilisé. Si je parviens à compilé moi même une version stable de FFMPEG optimisé pour les processeurs multicore (mon précédent essai faisait planté FFMPEG au bout de 5 secondes), alors je serais en mesure de remplacer l'exécutable natif par cette nouvelle version !!!

Le format H.264 étant complètement parallélisable en ce qui concerne sont décodage et surtout sa conversion (ce qui est déjà moins évident en ce qui concerne son codage), la conversion pourrait dépasser les 100 images secondes, soit 4 fois le temps réel pour la création des proxies, faisant de ce package le plus rapide du .... marché (terme un peu étrange lorsqu'il s'agit de softs Open-Source).

Cerise sur le gâteau, Blender n'utilisant que 11% d'un de mes core pour travailler avec un proxy, les corrections colorimétriques et autre effet ajouté sur le clip se font en temps réels !!! De plus, FFMPEG étant maintenant intégré au moteur de rendu, il est possible de rerendre directement le montage en H.264 avec encapsulation dans un container AVI, Quicktime ou MP4 natif ! La classe Blender !!!!!

Autant vous dire que je suis on ne peut plus emballé par cette découverte. Attendant de pied ferme le prochain projet "Open Movie" qui devrait selon tout vraisemblance et les dires de Ton Roosendaal être orienté Effets Spéciaux, nous amenant dans le core de Blender un Tracker 3D, tout un tas d'outils de rotoscopie et encore bien d'autres choses, je suis en passe d'obtenir une chaine de production complète orienté FX, de la captation à partir de ma caméra jusqu'à l'encodage final ! Et rappelons-le, toujours dans moins de 30 Mo !!!!

Pour les petits curieux qui voudrez essayer la chose :

http://www.openfilmmaking.com/wiki/index.php?title=BlenderAVC

Et voici les instructions pour l'installation correct de la Build :

http://www.openfilmmaking.com/wiki/index.php?title=BunnyHopHop

Même si nous ne sommes en présence que d'une version Beta, celle-ci est déjà extrêmement stable et sera surement intégrer dans les prochains mois dans le Trunk ! En tout cas je l'espère.

N'hésitez pas à cliquer sur la petite vignette accompagnant ce post afin de voir un clip MTS importé dans Blender. Oh ... que c'est bon !!!!!

2 commentaires:

lucky a dit…

Salut Coyhot!

C'est lucky (du BC), je cherchais des infos sur le montage AVCHD avec Blender et je tombe sur ton blog, le monde est petit :-)
Donc merci pour l'info cette version de Blender devrait m'être bien utile!

@+

CoyHot a dit…

Salut mon Lucky !

Juste pour info, Blender 2.5 est maintenant capable de lire par défaut les fichiers AVCHD. Cela ne permet pas forcément la mise en place automatique des proxys tel que le fait le projet susmentionné, mais c'est tout de même une grande avancée !

J'ai même réussi dernièrement à lire des fichiers MXF des packs DCP (Flux JPEG2000 et AC3) prévus pour la projection numérique dans les cinémas.

Après avoir passé 2 heures à essayé de les lire avec AfterFX, Premiere Pro, Avid, Final Cut et j'en passe, j'ai finalement essayé avec Blender et Bingo ! J'ai réussi à choper avec le sequencer les deux voies gauche/droite d'un trailer stéréoscopique. Le colospace étant en X'Y'Z' plutôt qu'en sRGB, AfterFX m'a permis de passer d'un espace à un autre. Mais je crois qu'il est prévu pour les futures moutures de Blender de gérer tout ces types de Colorspace. On pourra donc monter directement pour du Cinema Num stéréoscopique. Grâce aux évolution de FFMPEG et son encodage du JPEG2000 (dont il existe plusieurs variantes) et son encapsulage en MXF, les DCP Encoders de type Fraunhofer ne seront plus obligatoires. Restera plus qu'à avoir de quoi générer les 4 fichiers XML accompagnant le package DPC ... ce que fait déjà les outils de OpenCinemaTools.

Content en tout cas que mon article est pu t'aider mon ami !