Outils pour utilisateurs

Outils du site


informatique:generalites:video_quelques_commandes_ffmpeg_utiles

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
informatique:generalites:video_quelques_commandes_ffmpeg_utiles [15/07/2020 10:20] lauberterioinformatique:generalites:video_quelques_commandes_ffmpeg_utiles [25/08/2021 09:48] (Version actuelle) – [Normaliser l'audio] lauberterio
Ligne 11: Ligne 11:
   * Sur Linux, afin de bénéficier des dernières évolutions du logiciel, je n'utilise  pas la version packagée de ma distribution Linux, mais un binaire statique. Je vous encourage à faire de même et à l'installer dans le dossier ///opt// prévu à cet effet. Voir la page des téléchargements : https://ffmpeg.org/download.html \\ Vous n'êtes pas concerné par ce genre de considération sous Windows ou MacOS.   * Sur Linux, afin de bénéficier des dernières évolutions du logiciel, je n'utilise  pas la version packagée de ma distribution Linux, mais un binaire statique. Je vous encourage à faire de même et à l'installer dans le dossier ///opt// prévu à cet effet. Voir la page des téléchargements : https://ffmpeg.org/download.html \\ Vous n'êtes pas concerné par ce genre de considération sous Windows ou MacOS.
   * FFMPEG étant un logiciel **velu**, j'encourage tout un chacun à parcourir la [[https://ffmpeg.org/documentation.html|documentation]], complète (mais velue également, j'en conviens), afin d'un savoir plus sur chacune des possibilités présentées dans ce très modeste mémo.   * FFMPEG étant un logiciel **velu**, j'encourage tout un chacun à parcourir la [[https://ffmpeg.org/documentation.html|documentation]], complète (mais velue également, j'en conviens), afin d'un savoir plus sur chacune des possibilités présentées dans ce très modeste mémo.
-  * Il existe également un [[https://trac.ffmpeg.org/wiki|wiki]], très bien fait, qui reprend des informations de manière plus synthétique sur diverses opérations courantes qu'on peut être amenés à effectuer avec FFMPEG.+  * Il existe également un [[https://trac.ffmpeg.org/wiki|wiki]], très bien fait, qui reprend des informations de manière plus synthétique que la documentation sur diverses opérations courantes qu'on peut être amenés à effectuer avec FFMPEG.
  
  
Ligne 60: Ligne 60:
 ===== Normaliser l'audio ===== ===== Normaliser l'audio =====
  
-FFMPEG a un filtre appelé ''loudnorm'' qui permet de niveler le son selon la norme EBU R128. Si je comprends bien, c'est l'addition d'un normaliseur, un AGC et un Peak Limiter. Ça n'agit donc pas comme ReplayGain ou une normalisation classique, qui se contentent d'ajuster le niveau global de manière linéaire en fonction du moment où le volume de la piste est le plus fort. Au contraire ''loudnorm'' va quand à lui dénaturer de manière irréversible la piste sonore par écrasement de la dynamique en rendant plus fort certains passages faibles et vice-versa. Ça ne me pose pas de problème mais il faut le signaler. Par défaut, ''loudnorm'' copier le résultat de son travail dans un sous-dossier.+FFMPEG a un filtre appelé ''loudnorm'' qui permet de niveler le son selon la norme EBU R128. Si je comprends bien, c'est l'addition d'un normaliseur, un AGC lent et un Peak Limiter. Ça n'agit donc pas comme ReplayGain ou une normalisation classique, qui se contentent d'ajuster le niveau global de manière linéaire en fonction du passage où le volume de la piste est le plus fort. Au contraire ''loudnorm'' va quand à lui dénaturer de manière irréversible la piste sonore par écrasement de la dynamique en rendant plus fort certains passages faibles et vice-versa. Ça ne me pose pas de problème mais il faut le signaler. Par défaut, ''loudnorm'' copie le résultat de son travail dans un sous-dossier.
  
 On peut bien entendu l'utiliser sur des vidéos mais également sur des signaux audio seuls. Ça pourrait être une solution facile pour les petits podcasteurs qui n'ont pas forcément les compétences techniques pour régler des chaînes de compression, etc. dans leur éditeur audio. On peut bien entendu l'utiliser sur des vidéos mais également sur des signaux audio seuls. Ça pourrait être une solution facile pour les petits podcasteurs qui n'ont pas forcément les compétences techniques pour régler des chaînes de compression, etc. dans leur éditeur audio.
  
-J'ai trouvé ''lournorm'' très efficace pour du contenu de type documentaire, voix, musique de fond ou classique. Pour de la musique moderne, du rock ou quoi que ce soit ayant une dynamique variant de manière très rapide, je ne l'ai pas trouvé adapté : c'est un AGC lent, donc on n'pas d'effet de pompage, mais une variation de volume progressive sur plusieurs secondes, ce qui est très audible par exemple au passage entre un couplet calme et un refrain pêchu. Je précise que je ne l'ai testé qu'avec ses réglages par défaut, mais il est possible d'utiliser ses propres paramètres.+J'ai trouvé ''lournorm'' très efficace pour du contenu de type documentaire, voix, musique de fond ou classique. Pour de la musique moderne, du rock ou quoi que ce soit ayant une dynamique variant de manière rapide, je ne l'ai pas trouvé adapté : c'est un AGC lent, on a donc une variation de volume sur plusieurs secondes comme si quelqu'un tournait progressivement le bouton de volume, ce qui est très audible par exemple au passage entre un couplet calme et un refrain pêchu. Je précise que je ne l'ai testé qu'avec ses réglages par défaut, mais il est possible d'utiliser ses propres paramètres.
  
 Voici ce qu'en dit le créateur du filtre : http://k.ylo.ph/2016/04/04/loudnorm.html Voici ce qu'en dit le créateur du filtre : http://k.ylo.ph/2016/04/04/loudnorm.html
Ligne 73: Ligne 73:
 ''ffmpeg-normalize fichier.mp4 -c:a libopus -b:a 192k -ar 48000 -ext opus'' ''ffmpeg-normalize fichier.mp4 -c:a libopus -b:a 192k -ar 48000 -ext opus''
  
-  * [[https://opus-codec.org/|Opus]] PARCE QUE.+  * [[https://opus-codec.org/|Opus]] (par exemple).
   * Bitrate 192kbit/s   * Bitrate 192kbit/s
   * Comme ''loudnorm'' ré-échantillonne à 192 kHz pour effectuer son travail, il est nécessaire de préciser qu'il faut redescendre à 48 kHz au moment de l'encodage final. En l'occurence, ça ne semble pas obligatoire pour Opus qui ne connait que cette fréquence d’échantillonnage, mais c'est une bonne habitude à prendre en cas d'utilisation d'autres formats, qui eux permettent un encodage à 192 kHz.   * Comme ''loudnorm'' ré-échantillonne à 192 kHz pour effectuer son travail, il est nécessaire de préciser qu'il faut redescendre à 48 kHz au moment de l'encodage final. En l'occurence, ça ne semble pas obligatoire pour Opus qui ne connait que cette fréquence d’échantillonnage, mais c'est une bonne habitude à prendre en cas d'utilisation d'autres formats, qui eux permettent un encodage à 192 kHz.
Ligne 85: Ligne 85:
   * -t pour le //target//   * -t pour le //target//
  
-===== Extraire la piste audio =====+===== Extraire la piste audio d'une vidéo ===== 
 + 
 +<note warning>Les méthodes de base décrites ci-dessous fonctionne bien de manière générale. Cependant, il est fort probable que la durée du fichier audio ainsi extrait ne soit pas exactement égale à celle de la vidéo d'origine (si j'ai bien compris, c'est dû au taux d’échantillonnage variable du codec d'enregistrement utilisé, qui fait que tous les échantillons n'ont pas la même durée ?). Sur des vidéos d'une durée "normale" ça ne pose pas de problème. Récemment, j'ai dû travailler sur des vidéos de 3-4 heures d'un seul tenant, et la différence de longueur avoisinait 1 seconde, ce qui eut pour conséquence qu'au plus on s'approchait de la fin de la vidéo, au plus le son était désynchronisé de l'image. Pour y remédier, il faut utiliser la commande suivante pour l'extraction : 
 + 
 +''ffmpeg -i video.mp4 -af "aresample=async=1" audio.wav'' 
 + 
 +Ceci a pour effet d'allonger ou rétrécir certains échantillons (de manière imperceptible) afin que son et image restent synchronisés. Pour information, ça a réduit sur une vidéo de 4 heures le décalage à seulement une dizaine de millisecondes. Ce qui n'était plus problématique, mais n'était toujours pas la durée exacte de la vidéo. 
 + 
 +</note>
  
 ==== Vers le format FLAC afin de pouvoir travailler sans perte ==== ==== Vers le format FLAC afin de pouvoir travailler sans perte ====
  
-<code>ffmpeg -i video.mp4 audio.flac</code>+<code>ffmpeg -i video.mp4 [-compression_level 12] [-sample_fmt s16] audio.flac</code>
  
 La détection du format est automatique avec l'extension du nom de fichier. La détection du format est automatique avec l'extension du nom de fichier.
 +
 +  * [-sample_fmt s16] pour resampler en 16 bits
 +
 +<note>Pour une raison que j'ignore, l'extraction de l'audio avec encodage en FLAC est chez moi d'une lenteur anormale. Par conséquent, je sors le fichier en WAV puis le ré-encode manuellement avec Sound Converter.</note>
  
 ==== Vers le format d'origine ==== ==== Vers le format d'origine ====
  
-A rédiger.+Pour simplement extraire une piste audio qu'on ne souhaite pas retravailler, il suffit d'extraire les données telles quelles sans conversion. 
 + 
 +Pour ce faire, il faut d'abord connaître quel codec sonore est utilisé dans la vidéo :\\ ''ffprobe video.mp4'' 
 + 
 +Muni de cette information, on peut lancer la commande d'extraction. Prenons l'exemple où le codec audio utilisé est le AAC d'Apple, on utilisera :\\ ''ffmpeg video.mp4 -vn -acodec copy audio.aac'' 
 + 
 +  * ''-vn'' précise qu'on ne veut pas la vidéo 
 +  * ''-acodec copy'' précise d'utiliser le flux audio déjà présent 
 +  * il ne reste qu'à spécifier l'extension adéquate 
 + 
informatique/generalites/video_quelques_commandes_ffmpeg_utiles.1594801226.txt.gz · Dernière modification : 15/07/2020 10:20 de lauberterio