Groupe d'utilisateurs de Logiciels Libres de Toulouse
Promouvoir, développer et démocratiser les Logiciels Libres en Midi-Pyrénées

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
organisation:videos_howto [2012/01/28 19:14] – Infos générales d’encodage et utilisation d’encoc.sh gilles.bedelorganisation:videos_howto [2012/01/31 00:01] (Version actuelle) – [encoc.sh] Ajout d’un arbre de dépendance en ASCII art :-) gilles.bedel
Ligne 56: Ligne 56:
 ==== encoc.sh ==== ==== encoc.sh ====
 === Description === === Description ===
-Encoc.sh (pour encoding chain) n’est pas un script magique qui va tout faire tout seul : il faut savoir ce qu’on fait. Le but de cet outil est de simplifier l’exécution de toutes ces commandes en se concentrant sur les paramètres qui nous intéressent. Chacune des étapes ci-dessus a été codée dans un script, et tous ces scripts forment une chaîne d’encodage. Encoc.sh permet d’exécuter chacune des étapes indépendamment et selon une configuration globale donnée. Cette configuration est propre à un « projet », et transversale à toutes les étapes. Elle centralise tous les paramètres utiles, qui pourront ainsi être utilisés dans plusieurs scripts différents (par exemple, une fois la taille de la vidéo inscrite dans la configuration, elle sera utilisée par les scripts de l’image d’intro et d’encodage vidéo). +Encoc.sh (pour encoding chain) n’est pas un script magique qui va tout faire tout seul : il faut savoir ce qu’on fait. Le but de cet outil est de simplifier l’exécution de toutes ces commandes en se concentrant sur les paramètres qui nous intéressent. Chacune des étapes ci-dessus a été codée dans un script, qui lit un fichier en entrée et en produit un autre en sortie. Tous ces scripts mis bout à bout forment une chaîne d’encodage. Encoc.sh permet d’exécuter chacune des étapes indépendamment et selon une configuration globale donnée. Cette configuration est propre à un « projet », et transversale à toutes les étapes. Elle centralise tous les paramètres utiles, qui pourront ainsi être utilisés dans plusieurs scripts différents (par exemple, une fois la taille de la vidéo inscrite dans la configuration, elle sera utilisée par les scripts de l’image d’intro et d’encodage vidéo).
- +
-Les avantages de cette solution sont : +
-  * D’avoir une chaîne d’encodage réutilisable et modifiable. +
-  * De pouvoir s’arrêter puis reprendre plus tard le travail sans avoir à tout retenir de ce qu’on était en train de faire. +
-  * De pouvoir se passer de certaines étapes car on souhaite les faire autrement (par exemple, fournir sa propre image d’intro au lieu de la générer à partir du template).+
  
 === S’installer encoc.sh === === S’installer encoc.sh ===
Ligne 75: Ligne 70:
  
 === Utilisation === === Utilisation ===
-Dans les exemples, on imaginera travailler sur la conférence d’un logiciel nommé foobar. +Pour commencer, il faut se créer un répertoire de travail avec beaucoup d’espace disque, y copier la vidéo source, et concaténer les rushs :
-Pour commencer, il faut se créer un répertoire de travail avec la vidéo source, et concaténer les rushs :+
 <code> <code>
 mkdir foobar mkdir foobar
Ligne 84: Ligne 78:
 </code> </code>
  
-Sur le SVN, il y a déjà une chaîne nommée toulibre. Initialisez le répertoire de travail avec :+Sur le SVN, il y a déjà une chaîne nommée toulibre, conçue pour les conférences des rencontre de Toulibre. Initialisez le répertoire de travail avec :
 <code> <code>
 encoc.sh init /là/où/est/le/checkout/encoc/toulibre/ all.mts encoc.sh init /là/où/est/le/checkout/encoc/toulibre/ all.mts
Ligne 91: Ligne 85:
 Cela créera un fichier de configuration encoc.config, avec des tas de variables prédéfinies avec des valeurs par défaut. La plupart sont bonnes, mais quelques-unes sont vides et doivent être remplies. On verra plus tard comment. Cela créera un fichier de configuration encoc.config, avec des tas de variables prédéfinies avec des valeurs par défaut. La plupart sont bonnes, mais quelques-unes sont vides et doivent être remplies. On verra plus tard comment.
  
-Maintenant, en lançant encoc.sh sans paramètres, il affichera en plus de l’aide les scripts disponibles dans la chaîne d’encodage utilisée. On peut obtenir plus d’information sur un script en particulier en donnant -h suivi du script.+Maintenant qu’on a notre fichier de configuration qui contient notamment le chemin de la chaîne d’encodagesi on lance encoc.sh depuis ce répertoire il se servira toujours de cette chaîne. En lançant encoc.sh sans paramètres, il affichera en plus de l’aide les scripts disponibles dans la chaîne d’encodage utilisée. On peut obtenir plus d’informations sur un script en particulier en donnant -h suivi du script.
 <code> <code>
 encoc.sh -h audio.extract encoc.sh -h audio.extract
 </code> </code>
  
-Le script audio.extract est tout simple. On peut voir ce qu’il prend en entrée en produit en sortie. Ces fichiers correspondent aux variables $MTS et $AUDIO_TRACK du fichier de configuration encoc.config. On peut donc les modifier, ce qui peut être utile si ne veut pas suivre à la lettre la chaîne de traitement en utilisant des fichiers alternatifs.+Le script audio.extract est tout simple. On peut voir ce qu’il prend en entrée et produit en sortie. Ces fichiers correspondent aux variables $MTS et $AUDIO_TRACK du fichier de configuration encoc.config. On peut les modifier, ce qui peut être utile si ne veut pas suivre à la lettre la chaîne de traitement en utilisant des fichiers alternatifs.
  
-Pour lancer le script, il suffit de taper « encoc.sh audio.extract ».+Pour lancer le script, il suffit de taper ''encoc.sh audio.extract''.
  
-Voyons un script un peu plus complexe :+Voyons un script un peu plus complexe. Tapez :
 <code> <code>
 encoc.sh -h audio.mix encoc.sh -h audio.mix
Ligne 111: Ligne 105:
 </code> </code>
  
-Soit en éditant les variables dans le fichier de configuration. On peut aussi demander à encoc.sh qu’il édite le fichier de configuration avec les valeurs qu’on lui donne, à l’aide de l’option -w :+Soit en éditant les variables dans le fichier de configuration. On peut aussi demander à encoc.sh qu’il modifie le fichier de configuration avec les valeurs qu’on lui donne, à l’aide de l’option -w :
 <code> <code>
 encoc.sh -w AUDIO_START=07:56.8 AUDIO_END=1:04:57 encoc.sh -w AUDIO_START=07:56.8 AUDIO_END=1:04:57
 </code> </code>
  
-Le format des temps est toujours [[[[heures:]minutes:]:secondes]:milisecondes]. Encoc.sh converti toujours les temps en secondes, ce qui marche pour tous les logiciels. On peut voir la ligne de commande qu’encoc compte lancer avec l’option -p (pretend) :+Le format des temps est toujours [[[[heures:]minutes:]:secondes]:milisecondes]. En interne encoc.sh converti toujours les temps en secondes, ce qui permet de faire des additions et soustractions, et qui marche pour tous les logiciels. On peut voir la ligne de commande qu’encoc compte lancer avec l’option -p (pretend) :
 <code> <code>
 encoc.sh -p audio.mix encoc.sh -p audio.mix
 </code> </code>
 +
 +Ceci peut s’avérer très utile si on souhaite modifier la ligne de commande et la lancer soi-même, cependant rien de tout ça ne sera sauvegardé.
  
 L’option -t permet de lancer chaque commande avec time, pour voir combien de temps elle prend. L’option -t permet de lancer chaque commande avec time, pour voir combien de temps elle prend.
 +
 +=== Avantages ===
 +Les avantages à utiliser encoc sont :
 +  * D’avoir une chaîne d’encodage facilement réutilisable et modifiable. Il suffit de copier le répertoire et d’y modifier ce qu’on veut.
 +  * De retenir ce qu’on a fait auparavant pour éventuellement revenir dessus si on découvre une meilleure façon de faire.
 +  * De pouvoir s’arrêter puis reprendre plus tard le travail sans avoir à tout retenir de ce qu’on était en train de faire.
 +  * De ne pas être contraint de suivre à la lettre la chaîne de traitement donnée. On peut facilement exécuter une des étapes soi-même (c.f. option -p) si le script n’y arrive pas ou qu’on pense pouvoir mieux faire.
 +
 +=== Organisation des scripts ===
 +Les scripts forment un arbre (inversé) de dépendances qui ressemble à ceci :
 +<code>
 +upload
 + `-mux
 +    `+-audio.enco
 +      `-audio.mix
 +         `-audio.extract
 +     +-intro.enco
 +      `-intro.rasterize
 +         `-intro.gensvg
 +     `-video.enco
 +</code>
  
 === Pour une conférence classique === === Pour une conférence classique ===
-Les paramètres par défaut de la chaîne toulibre correspondent à une conférence classique d’une rencontre Toulibre. Dans chaque étape interviennent des variables de configuration qui peuvent être vues avec -h. Dans cette page on ne détaille que les plus importantes, mais d’autres peuvent être assez utiles. Pour bien faire il faut vérifier chaque fichier de sortie de chaque script pour vérifier qu’il est satisfaisant.+Les paramètres par défaut de la chaîne toulibre correspondent à une conférence classique d’une rencontre Toulibre. Dans chaque étape interviennent des variables de configuration qui peuvent être vues avec -h. Dans ce qui suit on ne détaille que les variables les plus importantes, mais d’autres peuvent être assez utiles.
  
 Le son : Le son :
-  * ''encoc.sh audio.extract'' +  * Tout d’abord extraire le son : ''encoc.sh audio.extract'' 
-  * Repérer le début et la fin. Pour le début on veut parfois être assez précis, pour tester utiliser ''play audio.track.wav trim <début> fade <fade-in>''+  * L’idée, c’est de commencer par régler le début et la fin de la vidéo selon l’audio, à l’oreille, car c’est plus précis. Une fois ceci fait, on peut si on le souhaite dores et déjà s’attaquer à l’encodage vidéo. 
 +  * Repérer le début et la fin. Il faut essayer de couper le début à un moment où il y a un silence, pour ne pas commencer sur un bruit. Pour jouer directement un découpage, utilisez ''play audio.track.wav trim <début> fade <fade-in>'' 
 +  * Régler éventuellement le silence de départ (AUDIO_START_DELAY). On ne pourra plus le modifier plus tard car les calculs de position de découpage de la vidéo se basent en partie là-dessus.
   * Éventuellement améliorer le son en positionnant AUDIO_SOX_CHAIN. On peut notamment se servir des filtres noisered et compand, mais c’est assez technique, je ne détaille pas cela ici.   * Éventuellement améliorer le son en positionnant AUDIO_SOX_CHAIN. On peut notamment se servir des filtres noisered et compand, mais c’est assez technique, je ne détaille pas cela ici.
   * ''encoc.sh audio.mix''   * ''encoc.sh audio.mix''
Ligne 135: Ligne 154:
 La vidéo : La vidéo :
   * La valeur prédéfinie pour ENCODING_OPTS est bonne et n’a normalement pas besoin d’être modifiée.   * La valeur prédéfinie pour ENCODING_OPTS est bonne et n’a normalement pas besoin d’être modifiée.
-  * On peut éventuellement réduire la résolution, ce qui fera qu’on obtiendra une qualité d’image équivalente pour un bitrate plus petit.+  * On peut éventuellement réduire la résolution, ce qui fera qu’on obtiendra une qualité d’image équivalente avec un bitrate plus petit.
   * Il faut surtout donner de bonnes valeurs à VIDEO_FILTERS et VIDEO_BITRATE. Pour une résolution de 1280 x 720, je dirais qu’il faut au grand minimum 200k, et 400k pour une qualité bonne/correcte.   * Il faut surtout donner de bonnes valeurs à VIDEO_FILTERS et VIDEO_BITRATE. Pour une résolution de 1280 x 720, je dirais qu’il faut au grand minimum 200k, et 400k pour une qualité bonne/correcte.
   * Pour tester ce que ça donne sur un extrait de la video :   * Pour tester ce que ça donne sur un extrait de la video :
Ligne 143: Ligne 162:
  
 L’intro : L’intro :
-  * Remplir les variables CONF_* et changer INTRO_DURATION selon la longueur du titre à lire (entre 7 et 14 secondes).+  * Remplir les variables CONF_*.
   * ''encoc.sh intro.gensvg''   * ''encoc.sh intro.gensvg''
   * ''encoc.sh intro.rasterize''   * ''encoc.sh intro.rasterize''
-  * ''encoc.sh intro.enco''+  * Changez INTRO_DURATION selon la longueur du titre à lire. Pour trouver une bonne durée d’exposition, faites en sorte que ayez le temps de tout lire deux fois. 
 +  * ''encoc.sh intro.enco''.
  
 Le muxage : Le muxage :