SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 155 visiteurs en ce moment

Accueil > Affichage multimédia > Audio, vidéo > Divers > Transcodage > Transcodage

Transcodage

18 octobre 2013 – par Emmanuel Dreyfus

2 votes

L’accessibilité des vidéos sur le web est un sujet de frustration. Il faut gérer l’ancien monde (applettes Flash lisant des fichiers .flv ou .mp4 encodés en H264) et le nouveau (balise video, avec des fichiers .mp4, .ogg/.ogv ou .webm), sachant que aucun format ou encodage n’est universellement supporté par les navigateur. Pour gérer tous les navigateurs, il faut à ce jour publier au moins deux version d’une vidéo.

Le plugin transcodage propose un transcodage automatique sur le serveur à chaque fois qu’une vidéo est versée, afin que chaque client puisse trouver la vidéo qu’il est capable de lire.

Ce plugin suppose la présence de la commande ffmpeg sur votre machine. D’autres programmes capable de transcodage peuvent être utilisés, il suffit d’ajuster la configuration.

Le réglage par défaut procède à un transcodage en .mp4 (H264), .flv (H264), .ogv, et .webm, et ce transcodage est synchrone avec la requête web de versement du fichier. C’est en pratique inutilisable pour des vidéos de taille intéressante à cause du temps de traitement. On peut gagner du temps sur plusieurs pistes décrites ci-dessous.

Deux encodages seulement

Il n’est pas nécessaire de transcoder en 4 formats différents. En pratique, du .mp4 en H264 et du .webm devraient suffire : le premier sera utilisé sur les anciens navigateurs via une applette Flash, et via la balise video sur IE et Safari. Le deuxième sera utilisé via la balise video sur Firefox, Chrome et Opera. Un plugin tel que vidéo(s) fera le sale travail de choisir le bon format selon les situations.

Pour réduire les transcodages effectués, allez dans la configuration du plugin et videz la ligne de commande le décrivant.

Transcodage en tâche de fond

La configuration du plugin vous permet d’indiquer qu’un encodage sera fait en tâche de fond, moyennant de cocher la case Asynchrone. Dans ce cas la commande de transcodage devra rendre la main immédiatement. Le plugin met une mire à la place de la vidéo à produire, et la commande de transcodage devra remplacer ce fichier. Si elle échoue, elle peut remplacer le fichier par une mire d’erreur fournie par le plugin.

La commande de transcodage subit les substitutions suivantes :

  • %d est remplacé par le répertoire de base du plugin
  • %i est remplacé par le fichier source à transcoder
  • %o est remplacé par le fichier destination
  • %e est le chemin de la mire d’erreur qui peut être copiée sur %o pour indiquer une erreur

Attention, le transcodage en tâche de fond est un sport délicat : il ne suffit pas de faire nohup commande &, une telle approche ne gère pas la sérialisation, et de nombreux transcodages lancés en parallèle risque de nuire au bon fonctionnement du serveur. Une méthode simple vous est proposée pour résoudre ce problème : utiliser le sous système d’impression.

Détournement des files d’impression

Le sous système d’impression d’Unix permet de gérer la sérialisation des traitements et la reprise après redémarrage. Rien ne nous impose de l’utiliser pour imprimer, et on peut tout à fait le détourner pour faire des transcodages de vidéos. C’est ce qui est proposé ici. La méthode a l’inconvénient de requérir la capacité de configurer les files d’attente d’impression, opération inaccessible pour la plupart des installations SPIP hébergées. Des pistes alternatives sont proposées à la fin de cet article.

Mode d’emploi du transcodage en tâche de fond via les files d’impression :

  • Dans la configuration du plugin, cocher Asynchrone, et indiquez par exemple pour .webm : %d/bin/lp-wrap.sh %i %o %e webm
  • Créez une file d’impression, par exemple dans /etc/printcap si
    le systeme d’impression LPR ou LPRng est utilisé (adaptez selon le chemin d’installation de votre SPIP) :
    tc:sh:lp=/dev/null:\
           :sd=/var/spool/output/tc:\
           :lf=/var/log/lpd-errs:\
           :if=/htdocs/spip3/plugins/transcodage/bin/lp-if.sh
  • Créez un groupe wwwtc commun au pseudo-utilisateur des daemons
    web et impression (si autre choix que wwwtc, adapter bin/lp-if.sh et bin/lp-wrap.sh dans le plugin)
  • Vérifiez que wwwtc a bien acces en écriture au répertoire IMG
  • Vérsez une video, observez les traitements avec lpq -Ptc (à adapter si votre file a été configurée sous un autre nom), voir les journaux d’impression en cas de soucis.

Améliorations

La démendance sur les files d’impression Unix sera un point de blocage pour de nombreux usagers. Il est probablement possible de faire mieux, en réimplémentant un système de file d’attente en PHP. On pourrait avoir un répertoire avec des fichiers décrivant chaque traitement mis en attente, et une tâche basée sur le cron de SPIP pour en lancer une en tâche de fond lorsque la précédente s’est achevée.

Cette contribution sera la bienvenue mais ne sera pas faite par l’auteur initial de ce plugin, qui obtient un fonctionnement satisfaisant avec les files d’impesssion LPR.

Dernière modification de cette page le 19 octobre 2013

Retour en haut de la page

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Metas +

    3 décembre – commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Import ICS 2 (agenda distant)

    2 août – 35 commentaires

    La version 2 du plugin « import ICS » en reprend la principale fonctionnalité, à savoir l’ajout automatique d’évènements distants dans la liste des évènements d’un site. À la différence de la première version, elle ne dépend pas du plugin « Séminaire » et est (...)

  • Newsletters

    16 janvier 2013 – 374 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)

  • CKeditor 3.0

    4 octobre 2009 – 1217 commentaires

    CKeditor est l’évolution de l’éditeur WYSIWYG : FCKeditor, avec ce plugin vous pourrez utiliser cet éditeur à la place de l’éditeur de spip tout en laissant le choix à vos auteurs de l’éditeur qu’ils préfèrent utiliser. Attention : cet éditeur WYSIWYG (...)

  • GIS 4

    11 août 2012 – 1284 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

Ça spipe par là