Les dessous d'un billet vidéo-illustré
Le billet précédent est agrémenté d'une petite vidéo. Voici son histoire, ou comment illustrer ses billets de vidéos en utilisant des formats ouverts.
Obtenir le bon fichier vidéo
Récupérer le fichier de la vidéo qui nous intéresse
Au cas présent il s'agit de cette vidéo hébergée sur YouTube et intitulée « Aldo Maccione" la classe" ».
Pour récupérer cette vidéo sous GNU/Linux, il vous suffit d'aller chercher le fichier correspondant dans le répertoire /tmp de votre système une fois la vidéo intégralement chargée dans votre navigateur.
Pour la suite du billet, le fichier aura pour nom « source.flv ».
Réencoder la vidéo en Ogg Theora et la recadrer
Pour réencoder la vidéo dans un format libre, nous allons utiliser le logiciel libre ffmpeg2theora, disponible sous la licence GNU GPL pour systèmes GNU/Linux, MacOS et Windows.
Comme indiqué précédemment, la résolution et le débit de la vidéo sont à choisir en fonction du type de vidéo. Au cas présent j'ai choisi un encodage à débit constant de 300 kbit/s qui est un débit particulièrement faible compte tenu que la séquence est un film de 320x192 pixels mais qui m'a paru – de façon complètement empirique – suffisant en l'espèce si l'on considère que la scène est assez peu animée et que les images composant la vidéo ont finalement assez peu de différences (le principe de base de la compression vidéo consiste à n'enregistrer complètement que quelques images clés appelées « trames I » puis à enregistrer les seules différences entre deux images clés pour composer les images intermédiaires appelées « trames P »).
La séquence présentait des bandes noires horizontales de part et d'autre de l'image qui nuisaient à la bonne intégration de la vidéo dans la page de mon billet. J'ai donc demandé à ffmpeg2theora de supprimer les bords de la vidéo en même temps qu'il la réencodait. L'opération n'est hélas pas automatique, aussi j'ai dû tâtonner pour définir en pixels la taille des bandes à supprimer (cette taille devant par ailleurs être, dans tous les cas, un multiple de deux)
Au final la commande pour réencoder et recadrer la vidéo est la suivante :
ffmpeg2theora -V 300 --croptop 24 --cropbottom 24 source.flv -o fichiertemp.ogg
D'une séquence audio-vidéo de 320x240 pixels encodée dans un format non-libre (en H.264/AVC Video pour la vidéo et MPEG-4 AAC pour l'audio) nommée « source.flv », on passe à une séquence audio-vidéo recadrée en 320x192 pixels dans un format libre (Ogg Theora à débit constant de 300 kbit/s pour la vidéo, et Ogg Vorbis pour l'audio) nommée « fichiertemp.ogg ».
A noter qu'un encodage en deux passes (au lieu d'une comme dans l'exemple ci-dessus), toujours à débit constant, vous permettrait d'optimiser la qualité de la vidéo.
En savoir plus : consulter les commandes pour ffmpeg2theora ici et là.
Extraire la portion qui nous intéresse
La séquence téléchargée depuis YouTube et réencodée au format Ogg est en fait une compilation de plusieurs séquences différentes. Nous allons extraire le tronçon qui nous intéresse et qui correspond grosso modo aux huit première secondes.
Nous utiliserons pour cela les Ogg Video Tools (et spécialement l'outil oggCut), un logiciel disponible sous la licence GNU GPL pour systèmes GNU/Linux, MacOS et Windows.
A noter que le tronçonnage va être effectué sans recompression, donc très rapidement et sans perte de qualité. Les indications temporelles sont exprimées en millisecondes. Elles sont toutefois indicatives dans la mesure où le logiciel ne coupera qu'aux endroits des « trames I ».
La commande pour extraire la première séquence de la vidéo est :
oggCut -s 0 -e 8140 fichiertemp.ogg destination.ogg
D'une séquence audio-vidéo de presque trois minutes nommée « fichiertemp.ogg » on ne conserve que le début en un séquence nommée « destination.ogg ».
On obtient ainsi une vidéo de huit secondes dans un format libre, d'une résolution de 300x192 pixels et qui pèse moins que beaucoup d'images sur le web : à peine 348 kio !En savoir plus : voir les commandes pour les Ogg Video Tools.
Intégrer la vidéo dans la page Web
L'intégration de la vidéo ainsi obtenue dans la page Web se fait au moyen des balises multimédias de HTML5 (un format ouvert).
A noter que la spécification HTML5 permet d'utiliser, au sein de la balise video
, l'attribut poster
pour spécifier une image à afficher en attendant que l'utilisateur ne lance la vidéo (si vous n'avez pas défini cet attribut alors c'est la première image de la vidéo qui sera affichée par défaut). Firefox 3.6 supporte cette fonctionnalité et il semblerait que ce soit le cas également d'Opera 10.50. En revanche les autres navigateurs compatibles HTML5 remplaceraient automatiquement cette image par la première image de la vidéo.
Sur le billet dont il s'agit, voici ce que vous voyez suivant que l'attribut n'est pas pris en compte (première capture, effectuée sous Firefox 3.5) ou l'est (deuxième capture, sous Firefox 3.6) :
Pour ma part je bénéficie de mon propre espace d'hébergement pour mon blogue sur le Web (lire ce précédent billet) de sorte qu'il me suffit d'y ajouter les séquences audio/vidéo pour les utiliser sur mon blogue. Sinon il existe des services d'hébergement de vidéos au format Ogg Theora.
Est-ce bien légal tout cela ?
Affirmatif. Quand bien même l'œuvre sur laquelle vous avez jeté votre dévolu n'autoriserait pas expressément et préalablement sa libre utilisation (au moyen d'une licence type Creative Commons), vous êtes autorisé par la loi à en reproduire à de courts extraits (c'est le droit de courte citation, une exception légale aux droits d'auteur).
Conclusion
Si vous avez mis en œuvre les différentes étapes décrites dans ce billet, vous devriez avoir noté différentes choses :
- L'encodage en Theora se fait à la vitesse de la lumière : c'est un des encodeurs les plus rapides de sa catégorie (certainement le plus rapide).
- La taille du fichier vidéo obtenu est particulièrement réduite : moins de 350 Kio quand même pour une vidéo de huit secondes !
- Malgré la vitesse élevée d'encodage et la très petite taille du fichier obtenu, la qualité de la vidéo est tout à fait satisfaisante (alors qu'il s'agit d'un réencodage !)
Qui a dit que Theora n'était pas un codec adapté au Web ?
Mise à jour : ®om me fait remarquer en commentaires que ffmpeg2theora peut tout à fait être paramétré pour n'encoder qu'une partie de la séquence, rendant superflu l'emploi d'oggCut au cas d'espèce. Tout le travail peut donc être réalisé avec une seule commande :
ffmpeg2theora -V 300 --two-pass --croptop 24 --cropbottom 24 -s 0 -e 8.14 source.flv -o destination.ogg