Je crois que je tiens un bon défi là

Objectif:
J'ai une animation générée dans une application AIR. Je voudrais transformer cette animation en vidéo et l'enregistrer sur ma machine.
- L'animation fait 1024x768 pixels.
- Je veux obtenir une vidéo en 50 fps.
- Je ne dispose pas d'assez de puissance pour me contenter de filmer l'écran avec un logiciel comme VLC ou CamStudio. Si je fais cela je rate des images. D'ailleurs AIR lui-même, sans parler de la capture vidéo, peine à tenir le FPS.
- J'ai donc codé un procédé qui me permet de jouer l'animation image par image, à la cadence que je veux, ou bien en attendant un évènement quelconque pour passer à l'image suivante.
- L'affichage de l'animation se fait avec Stage3D. Ce qui veut dire que je n'ai pas un accès facile au BitmapData contenant le rendu. Récupérer le contenu de la scène 3D dans un BitmapData est possible (Context3D.drawToBitmapData) mais couteux en temps, ce serait mieux d'éviter d'avoir à le faire.
- L'application n'est pas destinée à d'autre utilisateurs. C'est pour moi, je me sers de Flash comme d'un outil de réalisation, pour faire une animation que je veux diffuser en vidéo. Pas grave donc si la solution demande des bidouilles qu'on ne pourrait pas demander à un utilisateur lambda qui voudrait une application commode et tout-en-un.
Solution à améliorer:
Pour l'instant j'ai adopté la solution suivante: Affichage d'une image de l'animation, puis appel d'un petit programme de capture d'écran en png via NativeProcess. Dès que la capture est faite ça passe à l'image suivante, et etc. Quand j'ai tous les png (entre 20 000 et 30 000) j'en fais une vidéo avec ffmpeg.
Cette solution permet d'enregistrer environ 7 images par secondes. Du coup l'enregistrement de l'ensemble des images prend presque 1 heure, auquel s'ajoute le temps d'encodage à partir des images. J'aimerais bien pouvoir réduire ce temps.
[Edit du 03/11/2012] Une nouvelle solution
Comme je n'en pouvais plus de me retrouver avec des milliers de fichiers png, j'ai finalement réussi à faire autrement. Voir plus bas: http://forums.mediab...ost__p__1152306
Idées de comment faire, mais que je ne sais pas faire:
Voici les idée que j'ai eues, mais que je ne sais pas réaliser, et je me demande si quelqu'un saurait faire cela:
- Utiliser VLC pour capturer l'écran, en mode remote control, ce qui permet de lui envoyer des commandes, comme il le fait ici http://www.adobe.com...nrecording.html
Mais je n'ai pas trouvé la commande qui permet de dire à VLC: "capture une frame maintenant"
- Utiliser VLC ou ffmpeg, non plus en mode de capture d'écran, mais en lui fournissant les images via un autre protocole. Par exemple UDP, TCP/IP, rtp. Là je n'y connais rien, je n'ai jamais fait de trucs comme cela. Mais j'imagine que si c'est possible, il va falloir que j'envoie les images une par une via cette connexion, et que le logiciel les ajoutera une à une dans la vidéo, au fur et à mesure qu'il les reçoit.
Pour VLC: http://wiki.videolan..._network_stream
Pour ffmpeg: http://ffmpeg.org/ff....html#Protocols
Si quelqu'un sait faire cela il sera largement bienvenu

- Garder ma procédure de capture image par image en png, mais avec un programme qui tournerait en permanence. Pour l'instant je démarre l'utilitaire de capture à chaque screenshot. J'imagine que le temps de lancement du programme consomme du temps, et que ce serait mieux s'il tournait déjà en arrière-plan, et si je pouvais le commander en lui envoyant la commande "fait un screenshot maintenant". Je n'ai pas trouvé de tel utilitaire. Peut-être en modifier un existant, par exemple boxcutter dont les sources sont disponibles? Mais là encore je n'ai jamais programmé un truc comme ça.
Solutions écartées:
Voici d'autres idées que je n'ai pas retenues. Je les signale au cas où:
- Faire jouer l'animation au ralenti mais à cadence fixe, et filmer le tout avec VLC ou CamStudio. Cela serait simple, mais me demanderait plusieurs tests fastidieux pour trouver le meilleurs fps possible, où je vais être sûr de ne rater aucune image. En plus, cela ne serait adapté qu'à ce cas de figure, et je ne pourrai pas réutiliser ce procédé pour d'autre animations à venir qui serait plus grandes, plus petites, ou plus lourdes en calcul.
- Créer mon animation avec autre chose que flash. Haha très drôle, merci beaucoup, c'est sûr que Flash ne semble pas le plus adapté sur ce coup, mais c'est ce que je maitrise le mieux et au moins j'étais à peu près certains que j'arriverais à composer mon animation comme je la voulais.
- Utiliser la solution d'export vidéo de Flash Pro. Mais j'ai cru comprendre que ça ne marchait bien que si la machine était assez puissante pour faire tourner l'animation à la bonne cadence tout en encodant la vidéo, donc ce n'est pas pour moi. Et comme j'ai développé mon projet avec le SDK Flex, je ne peux tester facilement.
- Uiliser FLVEncoder. Mais les fichiers vidéos ne sont pas compressés je crois, donc cela ferait quelque chose d'énorme, peut-être même 1024*768*4*50*60*7 = 61Go pour une animation de 7 minutes à 50 fps.
Et voilà, je ne sais pas si quelqu'un m'aura lu jusqu'au bout! Des idées?