ffmpeg -an -i in.webm -f lavfi -i anullsrc -c:v copy -c:a aac -shortest -fflags +shortest -max_interleave_delta 200M -f nut - | ffmpeg -f nut -i - -vn -c copy silent.m4a

Cela se passe en deux temps. Dans un premier temps, créer une fichier texte de la forme  :

file large.mp3
outpoint 250.0

file small.mp3

file large.mp3

inpoint 250.0

Puis

ffmpeg -f concat -i list.txt -c copy combined.mp3

INPOINT :
Au point d'entrée du fichier. Lorsque le démultiplexeur ouvre le fichier, il recherche instantanément l'horodatage spécifié. La recherche est effectuée afin que tous les flux puissent être présentés avec succès au point d'entrée. Cette directive fonctionne mieux avec les codecs intra-trame, car pour les codecs non intra-trame, vous obtiendrez généralement des paquets supplémentaires avant le point d'entrée réel et le contenu décodé contiendra très probablement des trames avant le point d'entrée. Pour chaque fichier, les paquets avant le point d'entrée du fichier auront des horodatages inférieurs à l'horodatage de début calculé du fichier (négatif dans le cas du premier fichier), et la durée des fichiers (si elle n'est pas spécifiée par la directive de durée) sera réduite basé sur leur point d'entrée spécifié. En raison des paquets potentiels avant le point d'entrée spécifié, les horodatages des paquets peuvent se chevaucher entre deux fichiers concaténés.
 
OUTPOINT :
Point de sortie du fichier. Lorsque le démultiplexeur atteint l'horodatage de décodage spécifié dans l'un des flux, il le gère comme une condition de fin de fichier et ignore le courant et tous les paquets restants de tous les flux. Le point de sortie est exclusif, ce qui signifie que le démultiplexeur ne produira pas de paquets avec un horodatage de décodage supérieur ou égal au point de sortie. Cette directive fonctionne mieux avec les codecs et les formats intra-trame où tous les flux sont étroitement entrelacés. Pour les codecs non intra-trame, vous obtiendrez généralement des paquets supplémentaires avec un horodatage de présentation après le point Out. Par conséquent, le contenu décodé contiendra très probablement des trames après le point Out. Si vos flux ne sont pas étroitement imbriqués, vous risquez de ne pas obtenir tous les paquets de tous les flux avant le point Out et vous ne pourrez peut-être décoder que le premier flux jusqu'au point Out. La durée des fichiers (si elle n'est pas spécifiée par la directive duration) sera réduite en fonction de leur point de sortie spécifié.
 
 
 

Dans ce cas, la méta donnée ajoutée est un commentaire sur me MP3.

ffmpeg -i test.aac -c copy -metadata comment='this is test' -b:a 128k test.mp3

Vous pourrez retrouver l'ensemble des ID3 (autrement appelées métadonées) sur wikipedia

ffmpeg -i Victoria.mp3 -af silencedetect=noise=-10dB:d=0.2 -f null -

-i : nom du fichier musical en entrée
-af silencedetect : nom du filtre à appliquer, en l'occurence ici, silencedectect
noise= : seuil de détection du silence (ici : 10 décibels)
d= : duration : temps minimal d'un silence pour etre considédté comme tel. Ici o,2 secondes
-f : forcer le format (non compris)

ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex "[0:a]volume=0.5[a0];[1:a]volume=6dB[a1];[a0][a1]amix[a]" -map "[a]" -c:a output.m4a

ffmpeg -y -i "input.mp3" -filter_complex "[0:a]showcqt=s=1920x1080[v]" -map '[v]' -map '0:a' -c:a copy "out.mp4"

Exemple

ffmpeg -f lavfi -i "sine=frequency=1000:duration=60" -f lavfi -i "sine=frequency=600:duration=60" -filter_complex amerge "binaural.wav"

Les paramètres:

  • -f lavfi : entrée virtuelle
  • sine : création d''une onde sinusoïdale
    • avec une fréquence de 600 hertz
    • durant 60 secondes
  • -filter_complex amerge : on supperpose les deux fréquences
  • binaural.wav : fichier de sortie

Nous allons extraire ici l'ensemble des valeurs d'un fichier audio :

ffprobe -f lavfi -i amovie=input.aac,astats=metadata=1:reset=1 -show_entries frame=pkt_pts_time:frame_tags=lavfi.astats.Overall.RMS_level,lavfi.astats.1.RMS_level,lavfi.astats.2.RMS_level -of csv=p=0

Le (début de ) résultat est le suivant :

0.000000,-94.242176,-90.695028,-92.116095
0.026122,-88.683110,-89.800561,-89.205994
0.052245,-87.455818,-79.692913,-82.031082
0.078367,-47.230359,-37.537861,-40.105362
0.104490,-33.559114,-29.881830,-31.342365
0.130612,-29.359294,-29.174521,-29.265925
...
[VALEURS TRONQUEES PAR L'AUTEUR POUR GAIN DE PLACE]
...
29.622857,-27.450844,-31.811669,-29.105467
29.648980,-27.679600,-32.001942,-29.323871
29.675102,-28.605567,-29.807081,-29.164905
29.701224,-29.630424,-31.652050,-30.524651
29.727347,-29.469117,-30.119318,-29.782061
29.753469,-29.750756,-29.006272,-29.362581
29.779592,-29.663210,-30.199643,-29.923150
29.805714,-31.010380,-30.278244,-30.628902
29.831837,-29.716978,-27.809792,-28.659524
29.857959,-28.315882,-25.996002,-27.002848
29.884082,-28.654132,-26.654333,-27.540130
29.910204,-28.777370,-26.461379,-27.466787
29.936327,-30.244250,-27.341183,-28.554531
29.962449,-30.606389,-27.901449,-29.046646
29.988571,-30.912115,-26.968966,-28.507597
30.014694,-30.799260,-27.086664,-28.557767
30.040816,-31.738044,-27.939312,-29.435940
30.066939,-32.126610,-27.851268,-29.482805
30.093061,-30.121199,-26.558994,-27.984670
30.119184,-26.573242,-29.513186,-27.799051

Dans notre exemple, nous générons un LA3 de 440Hertz, fréquence de référence en musique, d'une durée de 5 secondes

ffmpeg -f lavfi -i "sine=frequency=440:duration=5" la.wav

 

ffmpeg -i input.wav -filter:a loudnorm output.wav

  • -i : fichier en entrée
  • -filter : filtres appliqués au son
  • output.wav : fichier de sortie

Une autre façon de faire :

ffmpeg -i fichier-en_entree.mp3 -filter_complex alimiter=level_in=1:level_out=1:limit=1.5:attack=7:release=100:level=disabled fichier_sortie.mp3

Ou encore une maniere de normaliser par auto détection :

ffmpeg -i video.avi -af "volumedetect" -f null /dev/null