我想更改音频文件的频率。意思是:整个文件听起来应该高一个八度或低一个八度。怎么做?ffmpeg
最好使用或其他命令行开源工具。
答案1
答案2
预先找到输入音频速率:
ffmpeg -i input.mp4
假设输入音频速率为 44,100 Hz,此命令将完成以下工作:
ffmpeg -i input.mp4 -af asetrate=44100*3/4,atempo=4/3 output.mp4
3/4 的系数会将大多数女性和“瘦弱”(花栗鼠)的声音改变为男性和“肥胖”的声音。使用 4/3 可实现相反的效果:
ffmpeg -i input.mp4 -af atempo=3/4,asetrate=44100*4/3 output.mp4
注意反转滤波器顺序以防止信号衰减。只要有可能,无损操作就应该在有损操作之前进行。我不能 100% 确定我是否因为误解了 FFmpeg 滤波器而犯了一些错误。
FFmpeg 过滤器asetrate
应该有一个名为ir
输入音频速率的变量,类似于某些视频过滤器中的iw
× ih
,但我在文档中找不到任何提及。
对于大于 2 的因子(例如 4/1 或 1/4),您必须使用多个atempo
过滤器(1/4 = 1/2 * 1/2 或 4/1 = 2/1 * 2/1):
ffmpeg -i input.mp4 -af asetrate=44100*4,atempo=1/2,atempo=1/2 output.mp4
我不知道如何获得“瘦”的男声和“胖”的女声。
-af
您可以写-filter:audio
或来代替-filter:a
。
参考
答案3
@slhck 回答更高质量的重采样器:
ffmpeg -i <input> -af 'asetrate=44100*1/2:resampler=soxr:precision=33,atempo=2/1' <output>