PNG ou FLV, quel est le meilleur rapport poids/performances ?

10 novembre 2008 – 14:16

Réaliser un 360° d'un produit en flash n'est pas quelque chose de rare sur internet, par contre multiples sont les méthodes possibles pour y arriver.  Niveau matériel, j'ai reçu des vidéos au format Quicktime (*.mov) en 640x480, d'une durée approximative de 6 secondes. L'objectif étant juste de permettre à l'utilisateur de naviguer "facilement" et "rapidement" dans la vidéo pour voir le produit tourner sur lui même.

Après avoir fait une conversion du fichier quicktime (*.mov) en *.flv on pourrait être tenté de simplement charger la vidéo dans Flash et de naviguer dedans mais on remarque vite que l'utilisation processeur (53%) est assez importante et ça rame pas mal (parce que lorsque vous atteignez une image précise, flash doit recalculer toutes les images pour faire le rendu), dommage car c'est vraiment léger comme fichier 600kb.

Du coup je me suis tourné vers un export du fichier original *.mov vers une séquence PNG, importé dans Flash sur la timeline. De là je charge mon swf et je peux naviguer sur la timeline avec une utilisation quasi nul du processeur, c'est rapide, fluide, mais lourd 2.5 mb le swf.

Dilemme poids/performances, qu'un collègue m'a aidé à résoudre en me proposant deux solutions.

  • Convertir le MOV en FLV, insérer le FLV sur la timeline de flash, exporté en SWF. Ensuite chargé le SWF et faire un BitmapData de toutes les frames de la vidéo pour pouvoir naviguer dedans.
    Avantages : Je garde le poids du FLV 600kb, je navigue dans la vidéo sans utiliser trop de ressources de la machine client
    Désavantages : Pour la vidéo de mon exemple 640x480 6 secondes, ça prends 220mb en mémoire (presque autant que charger le swf avec la séquence PNG de 2mb, qui en mémoire prends 250mb) . Ce qui pourrait faire planter le Flash player sur certaines configurations. Le flash est figé lorsqu'il capture les images.
  • Convertir le MOV en FLV en spécifiant "ajouter une image clé à toutes les images". Ensuite insérer le FLV sur la timeline de flash, exporté en SWF et chargé dans l'application.
    Avantages : Poids inférieur à la séquence PNG et navigation dans la vidéo super fluide. Utilisation processeur quasi nul. Utilisation mémoire 16mb.
    Désavantages : Plus lourd que le poids du FLV à la base. 600kb on passe à 2mb.

Finalement j'ai opté pour la deuxième alternative à l'exception que lors de la conversion de mon fichier Quicktime (*.mov) en *.flv j'ai ajouté une image clé toutes les 5 images.  Du coup mon FLV pèse 660kb au lieu de 600kb. Ce qui est raisonnable et les performances restent bonnes.

Cependant pour répondre à une question de Seb Lee-Delisle, lorsque vous utilisez une séquence PNG vous pouvez faire une boucle parfaite "invisible". Par contre avec un FLV on ressent une légère saute à chaque fois que le swf boucle. Aucune idée d'où ça provient mais il y a plus d'informations à ce sujet sur le blog de Seb Lee-Delisle.

Post a Comment