PyConFr2015

../../../../2015/10/21/pyconfr2015/
Antoine Van-Elstraete (antoine@van-elstraete.net)
mercredi 21 octobre 2015





5 min.

Image d'illustration

Ces 17 et 18 octobres 2015, la PyConFr 2015 se déroulait à Pau. Organisé par l’AFPy et PauLLA, la manifestation s’est déroulée à l’EISTI. À titre personnel, je m’occupais de l’infirmerie et supervisais avec Simon la capture vidéo des conférences.

L’événement s’est bien déroulé, et le succès semble être acquis. Les conférences de qualité, la bonne participation aux ateliers et aux sprints, le cadre et la dynamique apporté par les organisateurs ont fait de ce week end un grand moment.

N’oublions pas le Django Carrots, où de nombreux élèves répartis sur deux salles ont pu découvrir python et le framework django.

Pour moi, ce fut un moment très stimulant, autant sur le plan intellectuel qu’humain. Je n’ai pas pu assister à beaucoup de conférence, mais une séance de rattrapage est possible grace aux vidéos.

Captures vidéos

https://twitter.com/pyconfr/status/674373627572285442 :

bigup to @AntoineVe qui a encodé toutes les vidéos  de la PyConFr en .webm, .ogv et .mp4 soit dans les 150 vidéos environ

Je vais résumer ici ce que nous avons mis en place pour la capture vidéo des conférences, les remarques et les améliorations possibles.

Chaine de traitement

Processus d'acquisition et de publication des vidéos

Encodage

Pré-traitement

Lors du montage, les vidéos correctement découpées ont été exportées dans le conteneur Matroska. Les formats d’origine (DV + PCM ou MPEG4/AVC + AAC) ont été conservés.

Pour améliorer la qualité sonore, notament les différences de niveaux, j’ai utilisé le filtre compand qui va modifier la dynamique audio. Ce sont les paramètres fournis en exemples dans la documentation de ffmpeg dont je me suis servis :

-af "compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2"

Pour les vidéos entrelacées [1], j’ai utilisé le filtre vidéo yadif :

-vf yadif

Les vidéos ont ensuite été encodées selon les standards du web (HTML5). Dans les options de ffmpeg j’ai à chaque fois ajouté -threads 12 afin d’essayer d’utiliser au mieux les 12 coeurs CPU disponibles. Cela fonctionne bien pour la libx264 mais les libvpx-vp9 et libtheora ne semblent pas en profiter.

Conteneur MP4

Le conteneur MP4 contient le format vidéo H.264 et le format audio AAC.

ffmpeg -i video_in.mkv -c:v libx264 -tune stillimage -preset veryslow -profile:v high -crf 23 -threads 12 -c:a libfdk_aac -b:a 96k -ac 1 -ar 44100 video_out.mp4

  • options vidéos :
    • -tune stillimage : ce paramètre ajoute des options d’encodage optimisé pour les images fixes, ce qui est le cas ici.
    • -preset veryslow : option rendant le processus un peu plus lent mais générant des fichiers de plus petites tailles.
    • -profile:v high : le profil High détermine la norme à utiliser pour le codec. À cette heure, un grand nombre de périphérique accepte le profil High.
    • -crf 23 : qualité d’encodage, entre 0 (haute qualité) et 51.
  • options audios :
    • -b:a 96k : bitrate audio de 96 kbps
    • -ac 1 : son en 1 canal (mono)
    • -ar 44100 : taux d’échantillonage standard de 44.1 kHz

Plus d’informations sur https://trac.ffmpeg.org/wiki/Encode/H.264 et https://trac.ffmpeg.org/wiki/Encode/AAC.

Conteneur Ogg

Le conteneur Ogg contient le format vidéo Theora et le format audio Vorbis.

ffmpeg -i video_in.mkv -c:v libtheora -q:v 7 -threads 12 -c:a libvorbis -b:a 96k -ac 1 -ar 44100 video_out.ogv

  • options vidéos :
    • -q:v 7 : qualité vidéo, entre 0 et 10 (haute qualité).

Les options audios sont les mêmes que ci-dessus, appliquées au format Vorbis.

Plus d’informations sur https://trac.ffmpeg.org/wiki/TheoraVorbisEncodingGuide.

Conteneur WebM

Le conteneur WebM contient le format vidéo VP9 et le format audio Vorbis [2].

ffmpeg -i video_in.mkv -c:v libvpx-vp9 -threads 12 -crf 18 -b:v 1536k -c:a libvorbis -b:a 96k -ac 1 -ar 44100 video_out.webm

  • options vidéos :
    • -crf 18 -b:v 1536k : un mode spécifique à VP9 : recherche d’une qualité (crf, entre 0 (haute qualité) et 63) tout en ne dépassant pas un certain bitrate, ici 1,5 Mbps.

Plus d’informations sur https://trac.ffmpeg.org/wiki/Encode/VP9.

Conclusion

Bien que la machine utilisé pour l’encodage soit relativement puissante [3], la durée d’encodage est longue pour les formats theora et VP9.

Remarques et améliorations

  • Prévoir plus d’espace de stockage sur les machines qui reçoivent le flux vidéos par firewire.
  • Créer un script pour démarrer et stopper l’enregistrement simplement, e.g. : un bouton et non une longue ligne de commande pour permettre à quiconque de le faire [4]
  • Utiliser le format Opus avec le conteneur VP9
  • Préparer à l’avance la page web qui acceuillera les vidéos
  • Faire des tests, encore des tests et toujours plus de tests pour éviter les échecs et donc la perte de certaines vidéos.
  • Essayer de streamer en direct.

Mot de la fin

Encore merci à toute l’organisation et bien sur au club vidéo pour nous avoir accompagné dans cette aventure.

[1]Voir https://fr.wikipedia.org/wiki/D%C3%A9sentrelacement
[2]Le format VP9 contient normalement le format audio Opus, mais j’y ici choisis Vorbis car j’avais tout d’abord utilisé VP8 et je n’ai pas modifié le codec audio lors du passage à VP9. Plus d’infos sur l’utilisation de Opus dans ffmpeg : http://ffmpeg.org/ffmpeg-codecs.html#libopus-1.
[3]2x6 coeurs (Intel Xeon CPU X5670, 3Ghz), 48 Go de mémoire vive.
[4]https://twitter.com/FFeth/status/655685760029454336 :-)