Mode macro

Quelques photos prises en mode macro...

Une clé USB de l'intérieur : la puce USB


Une clé USB de l'intérieur : la mémoire Flash


Une carte USB 2.0 : la puce qui gère les ports USB


Une carte Quad Ethernet PCI-X : vue « en perspective »


C'est pas la peine de me dire que je suis un mauvais photographe, je le sais :)

Compression vidéo

Je m'amuse un petit peu avec la compression vidéo ces derniers temps... :)

Intéressant à noter aussi : j'ai téléchargé sur Internet deux vidéo clips musicaux (Bob Sinclar et Fergie - non c'est pas ça qui intéressant de noter) au format 3GP. Le format 3GP est un conteneur, comme Ogg, c'est-à-dire que ce n'est pas un codec à proprement parler : il contient de la vidéo et de l'audio, mais n'encode pas directement ces données multimédia ; il faut donc utiliser avec des codecs spécifiques au son et/ou à l'image. 3GP est basé sur MPEG-4, en le simplifiant pour l'adapter aux contraintes d'utilisation sur un téléphone mobile : pas de place, peu de bande passante, ressources système fortement limitées.

Ces vidéos étaient lisibles sur mon téléphone portable, puisque 3GP est un format créé par le groupe 3GPP, qui définit des standards à utiliser sur la téléphonie 3G – mon téléphone date d'avant la commercialisation de la 3G en France, mais c'est un Nokia, qui fait partie de 3GPP, et il implémente donc ces standards.

D'après mon téléphone, la vidéo était encodée en H.263, un des trois formats habituellement contenus dans un fichier 3GP – avec MPEG-4 et H.264. Le son devait assez probablement être de l'AMR-NB. La qualité était assez correcte, pour un fichier de moins de 1 Mo qui contenait 2 minutes et 7 secondes de vidéo + audio. On distinguait même le logo MTV en incrustation ! ;) Le fichier était encodé à peu près à 57 kbps.

Je me suis donc demandé si je pouvais encoder sous Linux des vidéos que je pourrais ensuite lire sur mon téléphone portable ! Eh bien... oui :) Plus d'infos sur aozeo.com, qui vous propose un encodage MPEG-4 + AMR-NB. A savoir que ffmpeg permet d'encoder en H.263/H.264, on devrait donc pouvoir facilement changer le codec vidéo.

Bon, maintenant c'est bien joli tous ces formats... mais c'est pas très libre tout ça[1] ! ;) Je me suis donc dit tiens, si on encode avec la même bande passante et la même taille d'image, mais en Ogg Theora + Vorbis, qu'est-ce que ça donne ?

Eh bien ça donne quelque chose de pas si mal ! L'image est plutôt bonne, et l'audio pas trop mal.

Voilà comment faire :

$ mencoder -vf "expand=176:::::4/3,scale=176:144" -ofps 12 -oac lavc \
   -ovc lavc -lavcopts vcodec=mpeg2video:acodec=mp3  -of mpeg \
   -o <fichier temporaire MPEG> <fichier d'entrée> 2>/dev/null
$ ffmpeg2theora -x 176 -y 144 -V 48 -A 12 -c 1 -H 8000 -S 0 \
   -o <fichier Ogg de sortie> <fichier temporaire MPEG>

On explicite tout ça :

  1. On commence par changer la taille de la vidéo, pour la ramener à un QCIF, soit 176x144 pixels – largement suffisant sur un téléphone mobile. On diminue le nombre d'images par seconde pour diminuer la taille du fichier final, ou plutôt augmenter sa qualité à taille constante. On enregistre ces modifications dans un fichier temporaire, au format MPEG (attention ! fichier très lourd...). La redirection de stderr vers /dev/null permet de se débarrasser des messages d'information que mencoder nous sort à chaque fois qu'il supprime une image, ce qui arrive souvent pour passer de 25/30 à 12 images/seconde...
  2. Ensuite on convertit le fichier MPEG au format Theora, en respectant le QCIF, avec 48 kbps pour la vidéo, 12 kbps pour l'audio (qu'on passe en mono 8000 Hz). L'option -S 0 permet d'augmenter la "sharpness" de la vidéo. En fin on indique le fichier de sortie et le fichier d'entrée.

Et le tout prend moins d'une minute pour une vidéo de 3 minutes 30 sur mon laptop avec un Pentium M à 1.7 GHz et 512 Mo de RAM ! Vous pouvez télécharger le résultat pour juger par vous-même... rien de transcendantal, mais une bonne qualité tout de même, pour 1,5 Mo.

Lost Parody par MadTV

De plus, avec une vidéo plus étudiée pour être encodée (et streamée), on obtiendrait de meilleurs résultats. Un exemple, une vidéo Sun Microsystems, prévue pour être diffusée sur le Web, et faite selon les "règles de l'art" : une seule personne, sur un fond simple, qui parle et bouge peu :

Solaris 10 - The Strategic Choice (Peter Ulander de Sun Microsystems

On notera tout de même un problème avec l'animation du début (la vague blanche qui glisse de droite à gauche), qui est due à la diminution du nombre d'images par seconde. Il y a deux moyens de pallier à ce problème : ralentir la vague, ou bien augmenter le nombre d'images par secondes (à 20 ça doit passer). Plus d'infos sur Solaris sur le site de Sun.

Pour info, la vidéo que j'ai utilisée dans le début de cet article provient de MadTV, un show de la Fox.

Notes

[1] Bien qu'un certain nombre d'implémentations libres existent, que les formats soient plus ou moins librement utilisables, y'a des gros monsieurs qui agitent très fort des brevets quand on leur parle de liberté, toussa.