Conversion automatisée des vidéos

Conversion automatisée des vidéos pour le web avec VLC

Problématique

De manière générale, les fichiers vidéos natifs sont assez volumineux. Les ajouter sur un site web directement est proscrit sans une conversion (format, dimensions, …).

Et lorsque la technologie et les performances des clients évoluent, il faut adapter la conversion et convertir à nouveau toutes les vidéos dans un nouveau format.

Or, si ces conversions sont réalisées une par une, manuellement, tout ce travail est fastidieux.

Il faut donc automatiser le plus possible ces conversions.

Solution

Les différentes étapes

  1. une nouvelle vidéo doit être convertie dans un ou plusieurs formats cibles. Ou encore : une ancienne vidéo doit être convertie dans un nouveau format.

  2. une fois la vidéo au nouveau format disponible, la transférer dans son répertoire final.

  3. ajouter la vidéo dans la page web (weblog, article, …)

Tout ce ceci peut être automatisé de la façon suivante :

  1. la vidéo est ajoutée dans la page web (brouillon) ;

  2. une extraction des métadonnées de la page web permet de lister les vidéos utilisées ;

  3. conversion des vidéos listées depuis leur source ;

  4. transfert des vidéos vers le répertoire final ;

  5. transfert de la page web dans son répertoire final (ou passage brouillon → publication).

Et pour réaliser tout ça, rien ne vaut du script, assez simple dans son principe :

  1. la vidéo est ajoutée dans la page web → page web au format XHTML

  2. une extraction des métadonnées de la page web → transfomation XSL

  3. conversions des vidéos listées → VLC + paramétrage

  4. transfert des vidéos → cp (copy) ou FTP

  5. transfert de la page web dans son répertoire final → cp (copy) ou FTP

Rien que ne sache pas faire un shell UNIX. À partir du moment où l’on dispose d’une page web au format XHTML (ou tout autre format XML) bien formé, tout le reste est automatisable.

Pré-requis

  • Un système d'exploitation UNIX ou GNU/Linux ;

  • VLC ;

  • Saxon (processeur XSL).

Mise en œuvre

  1. Téléchargez le fichier

  2. Décompressez l'archive

Vous disposez alors d'un répertoire video contenant :

  • Un répertoire source dans lequel vous copierez toutes les vidéos à convertir (et uniquement des vidéos) ;

  • Un répertoire ogg pour les compressions de vidéos au format ogg/Theora ;

  • Un répertoire mp4 pour les compressions de vidéos au format mp4 ;

  • Un répertoire webm pour les compressions de vidéos au format webm ;

  • Un shell mgi.sh (mgi = ManaGe Index) pour la gestion des conversions ;

  • Un shell hash.sh pour la gestion des hashages ;

  • Un shell efi.sh (efi = Extract From Index) pour générer les conversions ;

  • Un shell convert_video.sh pour exécuter les conversions ;

  • Un shell video_conv_from_xhtml.sh pour extraire les vidéos à convertir depuis une page web au format XHTML ;

  • Un fichier .config pour la configuration. À éditer et modifier pour définir les paramètres de la copie ;

  • Un shell pub.sh pour publier les fichiers dans le répertoire final (local ou distant) ;

  • Une transformation XSL videosrc.extract.xsl pour extraire les vidéos à convertir depuis une page web au format XHTML ;

Remarque

Le répertoire source contient quelques vidéos à titre d'exemple.

Usage

Copiez les sources à convertir dans le répertoire video/source. Il ne doit y avoir ici que des vidéos et rien d'autre.

Les conversions sont gérées par les scripts.

Contruire l'index des conversions

L'index des conversions sert à faire la correspondance entre un fichier à produire et sa source. C'est utile, par exemple, si vous voulez convertir les vidéos à partir d'une page web. Cette dernière ne connaît que les cibles et les scripts ne devinent pas les sources à employer.

L'index n'existe pas ou doit être reconstruit :

mgi.sh -x rebuild

L'index des conversions est stocké dans le fichier video.idx

Règle de construction

La règle de construction appliquée par défaut est :

nom_vidéo_source.xxx.ext (ext = mov, avi, mp4, wmv, etc.) → nom_vidéo_source.ogv (pour ogg), nom_vidéo_source.webm (pour webm), nom_vidéo_source.mp4 (pour mp4).

Rafraîchir l'index des conversions

L'index a déjà été créé et il faut y ajouter de nouvelles vidéos :

./mgi.sh -x refresh

Les nouvelles vidéos sont ajoutées selon la règle par défaut.

Définir une convertion vidéo

Pour convertir une vidéo à partir de sa source :

./efi.sh -s nom_vidéo_source

La vidéo est convertie dans tous les formats (ogg webm et mp4).

Pour convertir une vidéo à partir de sa source dans un format défini :

./efi.sh -s nom_vidéo_source -t type_mime

Avec pour type MIME : video/ogg, video/webm ou video/mp4.

Pour convertir une vidéo à partir de sa cible :

./efi.sh -o nom_vidéo_cible

La vidéo est convertie à partir de sa source correspondante.

Exécuter les conversions définies

./convert_video.sh

S'il y a eu précédemment des erreurs durant les conversions et que leur origine a été corrigée, vous pouvez recycler les conversions en erreur :

convert_video.sh -r

Rafraîchir le hashage

Le hashage permet de déterminer quels fichiers source ont été modifiés afin de les convertir à nouveau.

Pour cela :

./hash.sh

Puis :

./convert_video.sh

Le hashage permet de déterminer aussi quels fichiers cible ont été modifiés afin de les copier dans le répertoire final.

Pour cela :

./hash.sh

Puis :

./pub.sh

Publier les fichiers

Modifier le fichier .config :

  • TYPE_COPY=FTP

    FTP pour la publication FTP.

  • SERVEUR="192.168.0.4"

    Adresse IP de votre serveur web.

  • UTILISATEUR="user"

    Compte utilisateur à utiliser.

  • MOT_DE_PASSE="pass"

    Mot de passe de l'utilisateur.

  • REP_DISTANT="/usr/local/www/apache22/"

    Répertoire où publier les vidéos.

Pour lancer la publication :

pub.sh

S'il y a eu précédemment des erreurs durant les copies et que leur origine a été corrigée, vous pouvez recycler les copies en erreur :

./pub.sh -r