Objectifs :
Créer un plugin pour SPIP qui permette d’encoder vidéos et sons directement sur le serveur en formats utilisables sur Internet et ainsi d’éviter à l’utilisateur la maîtrise d’un logiciel tiers.
Les formats d’entrée autorisés pour l’instant sont configurables dans l’administration.
Ce plugin évite donc aux utilisateurs de se préoccuper de l’encodage dans un format qui n’est généralement pas proposé par les logiciels de montage vidéo.
Préalable
- 1. Spip bien entendu. En version 2.0.8 minimum.
- 2. Avoir la main mise sur le serveur. Pour les gens en mutualisé, désolé, mais il n’y a pas moyen que cela fonctionne chez vous.
- 3. Installer sur le serveur le logiciel d’encodage ffmpeg. La méthode est décrite dans cet article.
- 4. Certains autres plugins pour SPIP sont nécessaires :
- CFG pour la configuration
- SPIP-bonux pour les boucles POUR
- Saisies pour les balises
#SAISIE - getID3 : pour les récupérations d’informations sur les fichiers sonores
Fonctionnement
On upload une vidéo ou un son dans le dossier comme document joint dans SPIP.
Le maximum d’informations sont récupérées automatiquement comme la hauteur, la largeur, un logo...
Un nouveau formulaire d’insertion de vidéos est présent lors de la modification d’un article.
Ce formulaire est divisé en 2 :
- La première partie récupère dans le dossier upload tous les fichiers qui sont "encodables" et propose de les encoder au format qui nous intéresse... Le nouveau fichier au format .flv sera nommé de la sorte "ancien_nom_de_fichier.ext.flv" et sera alors disponible dans le répertoire upload en plus de l’original.
- La seconde partie du formulaire récupère quant à elle dans le dossier upload uniquement les fichiers insérables en streaming, donc tout fichier dont l’extension est ".flv". Il donne alors la possibilité de les insérer dans le corps de l’article de cette manière "<video1|center>
" qui fait appel au modèle "video.html"
Il est toujours possible d’uploader la vidéo originale sans l’encoder ou en plus pour des podcasts par exemple avec le formulaire classique d’insertion de documents.
Mise en Oeuvre
1. Récupérer le plugin en bas de cet article ou directement dans le dépot des plugin de spip.
2. Installer le plugin comme tout autre plugin de spip.
3. Aller à la page de configuration CFG qui va permettre de gérer l’ensemble des options nécessaires.
La configuration
La configuration du plugin est relativement complexe :
- La première étape est la sélection des formats pris en charge. Ces formats sont ceux qui sont utilisés pour récupérer des informations et qui seront potentiellement activable pour un encodage dans un autre format. Le résultat est deux arrays récupérables en SPIP de la sorte :
- #CONFIG{spipmotion/fichiers_audios}
- #CONFIG{spipmotion/fichiers_videos}
Ou encore en PHP de la sorte :
- lire_config('spipmotion/fichiers_audios')
- lire_config('spipmotion/fichiers_videos')
3. Pour l’encodage, on utilise un script bash "spipmotion.sh".
Ce script doit être exécutable. Vous pouvez le rendre exécutable directement avec votre logiciel ftp ou en utilisant cette commande directement sur le serveur (s’il est sous linux) :
- chmod +x plugins/spipmotion/script_bash/spipmotion.sh
Ainsi, le bouton encodage du formulaire adéquat doit renvoyer cette commande :
- script_bash/spipmotion --e video-entree.avi --s video-sortie.flv --bitrate XXX --audiobitrate XX --audiofreq XXXXXX --fps XX --p /usr/local/bin/ffmpeg
qui correspond à peu près à ceci :
- /usr/local/bin/ffmpeg -i fichier_entrée.ext -acodec mp3 -f flv -s 320x240 -ar 22050 -b 448kb -r 15 -y fichier_sortie.flv
Le résultat :
Le code
insère automatiquement ceci :
Le code
insère le document habituel :
Vous pouvez utiliser d’autres plugins afin de gérer au mieux l’affichage public de vos vidéos comme par exemple :
- Le plugin XSPF
- Le plugin Lecteurs Multimedias
- ...
L’original :
La démo ?
To Do List
Le plugin est dorénavant fonctionnel.
Pour l’instant je réfléchis à faire :
- La possibilité dans la boite d’encodage directement de choisir le format final d’encodage
- La possibilité d’encoder des fichiers sonores (MP3/OGG/AIFF) dans un autre format
- La possibilité d’encoder n’importe quel document d’ores et déjà inséré dans SPIP
- Possibilité de fonctionnement depuis l’espace public
- un filtre à passer avant l’encodage des vidéos afin de remplacer les espaces dans les noms de fichiers par des underscores tout comme les caractères accentués. Les espaces dans les nos de fichiers ne passent pas dans le script.
-
une fonction async_encode qui permettrait d’afficher un message d’attente lors de l’encodage, et de ne pas regénérer toute la page lorsque l’encodage est terminé.
J’attends les avis de testeurs pour l’améliorer.


Spipmotion - Dernière version