通过ffmpeg工具裁剪掉音频文件中的静默时间(将音频文件中声音低于指定分贝的时间段裁剪掉)
通过ffmpeg获取音频静默时间段=>通过静默时间段截取非静默音频=>将非静默音频合并为完整音频
工具的github地址:https://github.com/secret1base/silencevoice
下面是相关的ffmpeg命令
1、输出音频波形图
ffmpeg -i C:\Users\Lenovo\Desktop\cctv0810_5050381qyL.mp3 -filter_complex "showwavespic=s=1720x180" -frames:v 1 C:\Users\Lenovo\Desktop\111.png
2、mp3转pcm
ffmpeg -y -i C:\Users\Lenovo\Desktop\cctv0810_5050381qyL.mp3 -acodec pcm_s16le -f s16le -ac 2 -ar 16000 C:\Users\Lenovo\Desktop\16k.pcm
3、将音频文件中的静默时长从音频文件中移除后输出一个音频文件(测试后发现没有效果)
ffmpeg -i SILENCE.mp3 -af silencedetect=n=-50dB:d=1 -y -ab 192k SILENCE_OUT.mp3
4、输出音频文件中静默时间的开始与结束的时间节点
ffmpeg -i C:\Users\Lenovo\Desktop\20200801134820261.mp3 -af silencedetect=n=-50dB:d=0.5 -f null - 2> C:\Users\Lenovo\Desktop\log.txt
5、拆分音频文件
ffmpeg -ss 00:00:10 -t 00:01:00 -i input.mp3 -c copy output.mp3
-i 输入的音频
-c copy 用原来的编码并复制到新文件中
-ss 起始时间
-t 截取音频时间长度
-ss和-t xx // 单位:秒
-ss和-t xx:xx:xx // 时:分:秒
6、合并音频文件,这个是将多个音频合并为一个,合并后播放的效果为同时播放a、b、c音频的声音,也就是说将“天空之城”和“稻香”合并后会同时播放天空之城和稻香,而不是在播放完前者后再播放后者。
ffmpeg -i 音频文件1 -i 音频文件2 -i 音频文件3 -filter_complex amix=inputs=数量:duration=first:dropout_transition=数量 输出音频文件
ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 a.mp3
7、拼接音频
1、方法一
ffmpeg -i "concat:C:\Users\Lenovo\Desktop\xx\1.mp3|C:\Users\Lenovo\Desktop\xx\2.mp3" -c copy C:\Users\Lenovo\Desktop\xx\merge.mp3
2、方法二
ffmpeg -f concat -safe 0 -i C:\Users\Lenovo\Desktop\xx\zz.txt -c copy C:\Users\Lenovo\Desktop\xx\merge.mp3
zz.txt的内容为
ffconcat version 1.0
file 'C:\Users\Lenovo\Desktop\xx\1.mp3'
duration 44.0
file 'C:\Users\Lenovo\Desktop\xx\2.mp3'
duration 279.0
注意事项:不同的音频被合并后时间长度会发生变化,不是a拼接b后的时长不等于a+b甚至会小于a或小于b