Accueil Floss Manuals francophone

Puredata

Manipuler de la vidéo

Avec GEM, on peut afficher des images fixes, mais aussi des clips vidéo. Un clip vidéo n'est qu'une succession d'images fixes dont la vitesse d'affichage donne l'illusion du mouvement. Les images défilent à une rythme fixe, selon le standard utilisé. Par exemple, le standard européen PAL implique une cadence de 25 images par seconde alors que le standard américain NTSC utilise plutôt 29,97 images par seconde. Le patch suivant montre comment lire un clip vidéo afin de l'afficher sur un rectangle.

Capture_manipulervideo4.png

Lien vers le patch : http://gitorious.org/flossmanuals-fr/pure-data/blobs/raw/master/patchs/GEM/manipulervideo.pd

Le patch ci-dessus permet de charger et lire une vidéo, d'en changer la position, la couleur et l'opacité

Pour le faire fonctionner :

  1. Créer d'abord la fenêtre d'affichage (1) en ayant préalablement cliqué sur les options d'affichage (0);
  2. Charger un fichier vidéo (.avi, .mov, voir le prochain paragraphe à propos des codecs) soit depuis votre disque dur en cliquant sur le bang vert, soit en indiquant le chemin de celui-ci dans le message;
  3. Manipuler la tête de lecture pour « scratcher » avec la vidéo.
gemvideo.png

Il faut noter qu'il est possible de cocher l'interrupteur relié au message [auto < pour que la vidéo avance automatiquement. Autre méthode : utiliser un compteur cadencé (ou non) au rythme de l'affichage (25 images / secondes = une image toutes les 40ms). Pour cela, on peut utiliser un [metro 40] ou bien intercaler dans la chaîne GEM un objet [t a b], un bang est ainsi envoyé à chaque fois qu'une image « passe » dans le fil. Lorsque la vidéo arrive à sa dernière image, un bang est envoyé dans la troisième sortie de l'objet [pix_film]. Pour mettre la lecture en boucle, il suffit de relier ce bang au message [1<. La tête de lecture sera ainsi replacée. La deuxième sortie de [pix_film] indique quant à elle le nombre d'images contenues dans la vidéo (et donc potentiellement sa durée, si elle est à 25 images par secondes = Nbre Images x 40 ms), ainsi que la largeur et la hauteur de celle-ci. Enfin, lorsque l'on charge une vidéo, elle prendra toute la surface du rectangle. Dans notre exemple, donc, si elle n'est pas dans un rapport 4/3, elle sera déformée. Les informations de largeur et de hauteur données par l'objet [pix_film] permettent d'adapter dynamiquement la taille du rectangle avec une petite division [/ ].

Les codecs

Les compresseurs-décompresseurs méritent une partie à part entière, car il faudra souvent adapter l'encodage de la vidéo utilisée en fonction des librairies de décodage présentes sur son ordinateur, mais aussi l'usage que l'on souhaite faire de la vidéo (scratch de la tête de lecture ou lecture continue d'une longue vidéo).

Il faut tout d'abord rappeler que l'extension de fichier (.avi, .mov, .mkv, ...) ne révèle absolument pas avec quel codec la vidéo a été encodée, il s'agit simplement d'un conteneur qui cache la réelle « moulinette ». Une vidéo au format DV pourra, par exemple, avoir pour extension .mov, .mpg ou .avi.

Très grossièrement, il y a 2 types de codecs vidéo : ceux qui compressent chaque image séparément et ceux qui considèrent une suite d'images et vont tenter de diminuer le poids de la vidéo en trouvant des similitudes dans cette suite d'images (compression « interframe »). À cela, on peut ajouter la notion « d'images clefs », qui constituent un repère pour le lecteur vidéo. À titre d'exemple, si l'on veut scratcher avec la tête de lecture sur une vidéo, il faudra plutôt utiliser un codec qui compresse chaque image et les considère chacune comme une image clef.

GEM s'appuie sur les librairies de décodage du système d'exploitation, ce qui conditionne le type de vidéos qui peuvent être lues :

  • Mac OS X : [pix_film] devrait être capable de décoder des vidéos QuickTime en .mov.
  • Win32 : [pix_film] devrait être capable de décoder des vidéos .avi (tous les codecs installés sur le système. Avec de la chance, la version de GEM utilisée a été compilée avec le support QuickTime, si vous avez le lecteur QuickTime installé vous pourrez lire des vidéos en .mov.
  • GNU/Linux : ce cas est plus complexe, car pour GNU/Linux, il n'y a pas de format vidéo « natif ». La lecture de vidéo dépend donc des librairies de décodage installées sur le système et de la façon dont GEM a été compilé. Dans le meilleur des mondes linuxiens, GEM sera capable de lire des fichiers QuickTime/MOV, des fichiers en MPEG1 et 2, des AVI encodées en DivX, au format DV, des vidéos encodées en Theora, de la vidéo en HD, voire du flash et du stream. Fondamentalement, c'est en théorie le système d'exploitation GNU/Linux qui est capable de lire la plus grande diversité de formats. En pratique, il est parfois délicat de parvenir à cette exhaustivité. Quoi qu'il en soit, lorsque vous créez un objet [pix_film], l'interface principale de Pure Data (la console) présente les librairies de décodage associées à GEM sur son système.
pix_film:: quicktime support
pix_film:: libmpeg3 support
pix_film:: libaviplay support

Il faut aussi considérer que plus une vidéo est compressée, plus elle demandera de travail au processeur de l'ordinateur pour être lue. A contrario, une vidéo peu ou pas compressée prend beaucoup d'espace disque et nécessitera donc un bon débit du disque dur et de la carte mère pour pouvoir être lue de façon fluide. C'est donc encore une fois un compromis à trouver selon l'usage que l'on souhaite faire de ces vidéos.

Un format générique fonctionnant dans de nombreux cas sur les 3 systèmes d'exploitation est le MJPEG (Motion JPEG).

Le processus d'optimisation des vidéos est facilité par l'usage de logiciels dédiés tels FFMPEG et MENCODER. Ces deux outils de compression libres réalisent un ré-encodage précis et efficace tout en proposant des fonctionnalités d'automatisation bien utiles lorsque l'on a un nombre important de fichiers à convertir et à optimiser (traitement par lot massif). FFMPEG et MENCODER sont disponibles sur Linux ainsi que sur Mac OS X et Windows (pour ces derniers, la prise en main des logiciels s'effectue à l'aide d'une interface graphique).