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
0
A
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.