Procédure pour le traitement des podcasts de Libre à vous !

De April MediaWiki
Révision datée du 23 octobre 2019 à 13:25 par QGuLL (discussion | contributions) (Ajout section compression)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Introduction[modifier]

Dans le cadre de notre émission de radio Libre à vous ! sur Cause Commune nous produisons les podcasts par sujets traités.

Procédure pour le traitement des podcasts de Libre à vous ![modifier]

Traitement audio sous Audacity[modifier]

Compression[modifier]

À partir d'un enregistrement brut, il est de bon usage de normaliser un minimum le volume. Cela peut se faire via amplification, mais cette dernière est sensible aux pics furtifs de volume, qu'on ne veut pas voir saturer le résultat s'ils étaient trop amplifiés. Une solution pour adoucir les pics de volume, sans perdre d'information très intéressante dans le signal, est d'appliquer un filtre de compression qui va adoucir les disparités. Cela peut se faire avec l'outil "Compresseur" ( menu Effets -> Compresseur). À noter que l'outil compresseur effectue deux choses simultanément : compresser le signal et l'amplifier au mieux en évitant la saturation.


Signal avant compression
Signal après compression

Paramétrage :

  • Seuil : laisser tel quel
  • Niveau de bruit : laisser tel quel
  • Ratio : laisser tel quel
  • Temps d'attaque : 0.1s (minimum, pour cibler les pics)
  • temps de relache : 1s (minimum, pour éviter de fondre la compression dans plusieurs pics)
  • Compenser le gain à 0 dB : cocher
  • Compression basée sur les pics : cocher

Installer version patchée de ffmpeg[modifier]

Pour le traitement des podcasts, il est utile d'avoir un ffmpeg patché (du moins tant que le patch n'a pas été intégré dans la version officielle). C'est mmu_man (François Revol qui a fait le patch). Il permet d'ajouter par un script l'image de cover à nos podcasts sans que l'image soit floue. Sinon, il faut utiliser un logiciel avec un interface graphique, par exemple Easytag.

J'ai mis en ligne le tarball du FFmpeg que j'avais patché et compilé en novembre 2017 :

Car visiblement le patch ne s'applique plus : Clone le dépot et suivre les instructions du fichier README du dossier patch-ffmpeg.

Podcast principal[modifier]

Généralement, c'est Quentin (QGuLL) qui enregistre en direct l'émission (l'émission étant diffusée sur internet au format OGG ), et met en ligne le podcast en version OGG/Vorbis sur la partie Libre à vous ! de media.april.org

Normalement, pour 1h30 d'émission le fichier podcast doit avoir une taille d'environ 100 Mo, ou légèrement plus. Ce qui semble être un maximum acceptable pour les lecteurs de podcasts (mobiles notamment).

Partir du fichier enregistré par nos soins permet de traiter le podcast rapidement, mais Olivier Grieco (olicat, le directeur d'antenne de Cause Commune) fait des traitements sur le fichier audio enregistré par Cause Commune lors de la diffusion (suppression de bruits parasites, ajout éventuels de jingle). Son podcast est donc de meilleure qualité. Comme l'émission est rediffusée le soir même à 21h, généralement le podcast de Cause Commune est disponible en fin d'après-midi. Il est disponible sur la page consacrée à l'émission. Il y a un feed RSS.

Le fichier traité par Cause Commune est au format mp3 et a un bitrate de 320 kbit/s, et il fait environ 200 Mo. Ce qui nous semble beaucoup pour un podcast. Pour convertir le fichier au format OGG et réduire le bitrate (exemple avec l'émission du 22 janvier 2019)

 # wget https://cause-commune.fm/podcast-download/9512/distributions-gnu-linux-et-actions-de-sensibilisation.mp3
 # ffmpeg -i distributions-gnu-linux-et-actions-de-sensibilisation.mp3 -ab 192k -vn libre-a-vous-20190122.ogg

L'option -vn est utile car elle permet d'éviter d'avoir un fichier de sortie ayant un format Theora. Attention, elle doit être après le fichier qui est en paramètre de l'option -i et pas avant sinon cela ne fonctionne pas.

Chaque émission doit avoir sur la partie Libre à vous ! de media.april.org un répertoire dont le nommage est AAAAMMJJ (AAAA pour l'année en chiffres, MM pour le mois en chiffres, JJ en chiffres pour le jour de diffusion de l'émission). Dans ce répertoire le podcast est nommé libre-a-vous-AAAAMMJJ.ogg

Récupérer le fichier (wget, scp ou autre).

Après téléchargement, faire sur le serveur et sur son ordinateur un sha1sum (ou autre) pour vérifier que le fichier est ok (QGuLL a eu un problème la première fois qu'il a essayé de traiter le podcast) :

 # sha1sum libre-a-vous-20190108.ogg 
 cedba3c4249b667547058802f903c4148c1a1c7f  libre-a-vous-20190108.ogg

Vérifier la taille du fichier en Mo et le bitrate. Normalement le fichier généré par QGuLL a un bitrate de 192k.

Exemple avec le fichier de l'émission du 4 décembre 2018 :

 # file libre-a-vous-20181204.ogg 
 libre-a-vous-20181204.ogg: Ogg data, Vorbis audio, stereo, 44100 Hz, ~192000 bps
 # du -sh libre-a-vous-20181204.ogg 
 95M        libre-a-vous-20181204.ogg

Si le fichier est trop gros et que le bitrate est supérieur à 192k, il vaut mieux réduire. Exemple de commande :

 # ffmpeg -i fichier_podcast_input.ogg -ab 192k fichier_podcast_output.ogg

Découpage des podcasts[modifier]

Il s'agit de découper le podcast principal pour avoir un podcast par sujet traité pendant l'émission.

L'idéal étant de commencer le podcast dédié au moment où la personne qui anime commence le sujet. Généralement par la phrase « nous allons commencer par un … » ou « nous allons passer au premier sujet » ou encore « nous allons changer de sujet ». Ou encore « L'émission se termine bientôt, nous allons passer aux annonces » ou « Nous approchons de la fin de l’émission, nous allons passer aux annonces ».

S'il y a une musique à la fin du sujet dédié (qui est une pause musicale avant un autre sujet), ne pas garder la musique finale dans le podcast du sujet. On peut garder les musiques qui sont diffusées pendant le sujet.

Pour découper les podcasts, on peut utiliser par exemple Audacity, ffmpeg ou l'outil qui fait tout.

Découpage avec l'outil qui fait tout[modifier]

Avoir un dossier avec une version recompilée de FFmpeg et un clone du dépot git des outils lav (cf https://agir.april.org/projects/libre-a-vous/repository/revisions/master/show )

Suivre les instructions du README du dossier d'outils

Découpage avec ffmpeg[modifier]

Si on veut utiliser ffmpeg, on repère (avec VLC ou un autre logiciel) les temps de début et fin de chaque sujet et on utilise les options -ss -to de ffmpeg pour découper le podcast principal.

Exemple avec l'émission du 4 décembre 2018 https://april.org/emission-libre-a-vous-diffusee-mardi-4-decembre-2018-sur-radio-cause-commune

Le podcast principal est https://media.april.org/audio/radio-cause-commune/libre-a-vous/emissions/20181204/libre-a-vous-20181204.ogg

Les commandes ffmpeg pour découper le podcast sont (ne pas hésitez à mettre des centièmes de secondes) :

 # ffmpeg -i libre-a-vous-20181204.ogg -vn -acodec copy -ss 00:02:10.4 -to 00:16:47.8 libre-a-vous-20181204-poss.ogg
 # ffmpeg -i libre-a-vous-20181204.ogg -vn -acodec copy -ss 00:16:47.3 -to 01:06:33 libre-a-vous-20181204-associations.ogg
 # ffmpeg -i libre-a-vous-20181204.ogg -vn -acodec copy -ss 01:10:55 -to 01:21:29 libre-a-vous-20181204-libre-en-fete.ogg
 # ffmpeg -i libre-a-vous-20181204.ogg -vn -acodec copy -ss 01:21:30 -to 01:29:58 libre-a-vous-20181204-annonces.ogg

Copier les fichiers dans le répertoire consacré à l'émission sur https://media.april.org/audio/radio-cause-commune/libre-a-vous/emissions/

Le résultat est https://april.org/emission-libre-a-vous-diffusee-mardi-4-decembre-2018-sur-radio-cause-commune#Podcasts_des_differents_sujets_abordes

L'option -vn est utile car elle permet d'éviter d'avoir un fichier de sortie ayant un format Theora. Attention, elle doit être après le fichier qui est en paramètre de l'option -i et pas avant sinon cela ne fonctionne pas.

Vérifier le format des fichier Vorbis audio uniquement[modifier]

Penser à vérifier avec les commandes mediainfo ou file que les fichiers sont bien en Vorbis seul et non pas en Vorbis et Theora (cf https://linuxfr.org/nodes/115662/comments/1753995). Le problème était que le fichier était en Vorbis et Theora :

 # file libre-a-vous-20181106-telephonie-mobile-libertes.ogg
 libre-a-vous-20181106-telephonie-mobile-libertes.ogg: Ogg data, Theora video

alors que cela aurait du être : Ogg data, Vorbis audio, stereo, 44100 Hz,

On vérifie donc

 # file libre-a-vous-20181204*
 libre-a-vous-20181204-annonces.ogg:      Ogg data, Vorbis audio, stereo, 44100 Hz, ~192000 bps
 libre-a-vous-20181204-associations.ogg:  Ogg data, Vorbis audio, stereo, 44100 Hz, ~192000 bps
 libre-a-vous-20181204-libre-en-fete.ogg: Ogg data, Vorbis audio, stereo, 44100 Hz, ~192000 bps
 libre-a-vous-20181204.ogg:               Ogg data, Vorbis audio, stereo, 44100 Hz, ~192000 bps
 libre-a-vous-20181204-poss.ogg:          Ogg data, Vorbis audio, stereo, 44100 Hz, ~192000 bps


Ajout des métadonnées et de l'image de pochette (cover) sur tous les podcasts avec EasyTag[modifier]

Note : il est plus simple et rapide d'utiliser ffmpeg version patchée pour l'ajout des métadonnées et de l'image de pochette, voir plus bas.

Il est possible d'ajouter une image à un fichier audio, l'image servant de « jaquette » / « pochette » et sera affichée par certains lecteurs audio (comme VLC par exemple). J'avais donc créé une image mélangeant le logo Cause Commune et la bannière Libre à vous !

L'image est image-pour-etiqueter-podcast.png (voir https://agir.april.org/issues/3191). L'image est { https://agir.april.org/projects/libre-a-vous/repository/revisions/master/show/podcasts/images dans le dépôt git de Libre à Vous !].

Information importante à savoir si on modifie l'image et qu'on a déjà utilisé l'image précédente pour l'avoir en « jaquette » / « pochette » d'une émission. Si on utilise VLC pour vérifier que l'image a bien été ajoutée on peut en fait voir affichée l'image précédente car VLC a un cache (il n'y a pas ce problème avec mplayer ou totem). Si on utilise VLC, il vaut mieux vider le cache qui est $HOME/.cache/vlc/art/arturl

Il faut aussi modifier/mettre à jour les métadonnées pour ajouter les informations de licence, url, auteur...

Il faut faire ça sur tous les podcasts (le podcast de l'émission et les podcasts par sujet).

En mode graphique, on peut utiliser le logiciel EasyTAG (éditeur de métadonnées).

Pour ajouter l'image à un podcast, exécuter easytag :

  • sélectionner le fichier audio
  • cliquer sur Images
  • cliquer sur + pour ajouter une image
  • cliquer sur l'image ajoutée pour la sélectionner
  • cliquer sur l'icone (dans la liste des icones qui commence par l'icone +) "Etiqueter les fichiers sélectionnés avec ces images"
  • cliquer sur le menu « Fichier », et sélectionner « Enregister les fichiers »

Pour mettre à jour les métadonnées, exécuter easytag

  • sélectionner le fichier audio
  • cliquer sur Général
  • dans « Titre » mettre le nom de l'émission et la date, par exemple : « Libre à vous ! du 4 décembre 2018 »
  • dans « Artiste » mettre « April - Cause Commune »
  • cliquer sur le menu « Fichier », et sélectionner « Enregister les fichiers »

Faire la même chose avec les podcasts par sujets. Dans le « Titre » pour les métadonnées, mettre le nom de l'émission, la date, et le nom du sujet, par exemple « Libre à vous ! du 4 décembre 2018 - Partie Libre en Fête »

Ajout des métadonnées et de l'image de pochette (cover) sur tous les podcasts avec ffmpeg (version patchée)[modifier]

ffmpeg permet de modifier en ligne de commande les métadonnées et d'ajouter une image de pochette à un fichier audio .ogg. Mais avec la version actuelle de ffmpeg l'image ajoutée est redimensionnée et devient floue. C'est visiblement lié au format Vorbis/OGG.

François Revol (mmu_man) a fait un patch à ffmpeg pour corriger (patch pas encoré intégré dans la version officielle).

Dans le « Titre » pour les métadonnées des podcasts par sujet, mettre le nom de l'émission, la date, et le nom du sujet, par exemple « Libre à vous ! du 4 décembre 2018 - Partie Libre en Fête »

#!/bin/bash

ffmpegbin=~/local/FFmpeg/ffmpeg
image="image-pour-etiqueter-podcast.jpg"
source="libre-a-vous-20181204.ogg"
destination="new/${source}"
url="https://media.april.org/audio/radio-cause-commune/libre-a-vous/emissions/20181204/${source}"
title="Libre à vous ! du 12 décembre 2018 sur Cause Commune"
fichiertemp="$(command mktemp -t "tmp.XXXXXXXXXX.ogg")"

mkdir new

#Fichier pour fournir l'information d'en-tête sur l'image

(echo -en ";FFMETADATA1\nMETADATA_BLOCK_PICTURE=";(i=${image};t=3;m="image/jpeg";eval "w=`identify-im6 "$i"|awk '{g=$3;sub("x"," h=",g);print g;d=$5;gsub(/-.*/,"",d);print " d=" d}'`"; echo -en "\x00\x00\x00\x$(printf '%02x' $t)\x00\x00\x00\x$(printf '%02x' `echo -n "$m"|wc -c`)$m\x00\x00\x00\x00$(printf '%08x' $w|sed 's/../\\x&/g')$(printf '%08x' $h|sed 's/../\\x&/g')$(printf '%08x' $d|sed 's/../\\x&/g')\x00\x00\x00\xff$(printf '%08x' `stat -c '%s' "$i"`|sed 's/../\\x&/g')";cat "$i")|base64 --wrap=0) > i.meta

${ffmpegbin} -y -i ${source} -acodec copy -map 0:0 -map_metadata -1 -metadata title="${title}" -metadata copyright="Diffusée selon les termes d’au moins une des licences suivantes : licence Art libre version 1.3 ou ultérieure http://artlibre.org/licence/lal/, licence Creative Commons By Sa version 2.0 ou ultérieure http://creativecommons.org/licenses/by-sa/2.0/fr/ et licence GNU FDL version 1.3 ou ultérieure http://www.gnu.org/licenses/fdl-1.3.html" -metadata artist="April - Cause Commune" -metadata contact="${url}" ${fichiertemp}

${ffmpegbin} -i ${fichiertemp} -i i.meta -acodec copy -map 0:0 -map_metadata 1 ${destination}

rm ${fichiertemp}
rm i.meta

Mettre à jour les pages consacrées à l'émission[modifier]

Il faut ajouter le podcast principal et les podcasts par sujets dans les pages consacrées à l'émission :

  • la page sur le site de l'April : c'est la page qui contient notamment les références citées dans l'émission (ce n'est pas la page annonçant l'émission). Cette page est normalement déjà en ligne, car mise en ligne avant le début de l'émission.
  • la page sur le site de Cause Commune, page qui est déjà en ligne également

Pour la page sur le site de l'April :

  • aller sur la page, clique sur Editer
  • ajouter le podcast principal en modifiant le paragraphe « (Ré)écouter en ligne » (qui n'apparaît pas dans la version publiée car il est en commentaire au niveau du html) : mettre le lien du podcast, et supprimer les tags html pour que le paragraphe apparaisse
  • Ajouter en « Type de publication » : Podcast Libre à vous !
  • aller dans le bloc « RSS Enclosure », mettre l'adresse du podcast dans le premier champ du formulaire, laisser à 0 le champ « file size » et mettre audio/ogg dans le champ « File type ». C'est cette modification qui permet que le podcast apparaisse ensuite dans le flux RSS.
  • pour les podcasts par sujet, modifier le paragraphe « Podcasts des différents sujets abordés » (qui n'apparaît pas dans la version publiée car il est en commentaire au niveau du html) mettre les liens du podcast, et supprimer les tags html pour que le paragraphe apparaisse. Pour avoir facilement la durée des podcasts (pour mettre à jour la page) j'ai exécute la commande : for i in *.ogg ; do echo $i; mediainfo $i |grep Duration; done
  • supprimer la ligne « Les podcasts seront disponibles après la diffusion de l'émission (le jour même ou le lendemain). »
  • supprimer le bouton "Écouter le direct"
  • vérifier que les liens sont en https
  • Enregistrer les modifications

Pour la page sur le site de Cause Commune (Fred le fera) :

  • juste mettre à jour la partie qui concerne les podcasts par sujets

Faire annonces sur les réseaux sociaux[modifier]

TODO par Fred

Script pour générer le flux RSS avec les fichiers OGG, MP3 et les podcasts par sujets[modifier]

Le flux RSS Drupal propose uniquement le podcast OGG de l'émission (champ Enclosure quand on édite la page consacrée à une émission).

On a donc mis en place un script feed2lav.pl qui à partir de ce flux génère le flux officiel de l'émission.

Le script ajoute le podcast de l'émission au format MP3 et les podcasts par sujets.

Voir la tâche et le dépot git du script.

Le script est exécuté par crontab sur la VM Drupal (le dépôt ayant été cloné dans /srv/lav-outils)