有m4a格式的不同长度的音轨。还有一个ffmpeg库,用于处理媒体。许多轨道最终都会产生“衰减”效果,因此有必要确定它发生在什么点(确定一次,并将值连同有关轨道的其他信息一起输入数据库)。那些。我们必须以某种方式确定音轨开始逐渐消失,并且其音量已达到歌曲总音量的30%。是否可以通过ffmpeg解决,如果可以,如何解决?
最佳答案
如果您运行此命令,
ffmpeg -i in.mp4
-af astats=metadata=1:reset=1,
ametadata=print:key=lavfi.astats.Overall.RMS_level:file=vol.log -vn -f null -
它将生成一个名为
vol.log
的文件,如下所示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
pts_time
是时间索引,RMS电平是该间隔的平均音量(此处为21 ms)。每下降6dB对应于当前音量下降一半。如果使用
reset=0
运行命令,则生成的日志文件中的最后一个读数将显示整个文件的RMS量。然后,作为平均音量的30%的音量比平均值低〜10.5 dB。