2016-08-23 2 views
0

Il existe des pistes audio de différentes longueurs au format m4a. Et il y a la bibliothèque ffmpeg pour travailler avec les médias. La plupart des pistes ont l'effet de "désintégration" à la fin, et il est nécessaire de déterminer à quel point il se produit (déterminé une fois et la valeur entrée dans la base de données avec d'autres informations sur la piste). Ceux. nous devons en quelque sorte déterminer que la piste commence à s'estomper, et son volume a atteint 30% par rapport au volume total de la chanson. Est-il possible de résoudre au moyen de ffmpeg, et si oui, comment?Définition du moment de l'atténuation audio via ffmpeg

Répondre

0

Si vous exécutez cette commande,

ffmpeg -i in.mp4 
     -af astats=metadata=1:reset=1, 
      ametadata=print:key=lavfi.astats.Overall.RMS_level:file=vol.log -vn -f null - 

il va générer un fichier appelé vol.log qui ressemble à ce

frame:8941 pts:9155584 pts_time:190.741 
lavfi.astats.Overall.RMS_level=-79.715762 
frame:8942 pts:9156608 pts_time:190.763 
lavfi.astats.Overall.RMS_level=-83.973798 
frame:8943 pts:9157632 pts_time:190.784 
lavfi.astats.Overall.RMS_level=-90.068668 
frame:8944 pts:9158656 pts_time:190.805 
lavfi.astats.Overall.RMS_level=-97.745197 
frame:8945 pts:9159680 pts_time:190.827 
lavfi.astats.Overall.RMS_level=-125.611266 
frame:8946 pts:9160704 pts_time:190.848 
lavfi.astats.Overall.RMS_level=-inf 
frame:8947 pts:9161728 pts_time:190.869 
lavfi.astats.Overall.RMS_level=-inf 

Le pts_time est l'indice temporel et le niveau RMS est le volume moyen de cet intervalle (21 ms ici). Chaque goutte de 6dB correspond à une baisse de moitié du volume actuel.

Si vous exécutez la commande avec reset=0, la dernière lecture dans le fichier journal généré affichera le volume RMS pour l'ensemble du fichier. Ensuite, le volume qui est de 30% du volume moyen est inférieur de ~ 10,5 dB à la valeur moyenne.