如何使用ffmpeg改变音频节奏和音调个性?

时间:2012-06-29 10:20:53

标签: android audio android-ndk ffmpeg audiotrack

我已经设法在我的android项目中使用ffmpeg和AudioTrack类播放音频文件。我可以使用AudioTrack类setRate方法更改音频的速度。但它也改变了音频的音调,我想只改变音频的速度,但我发现网上没有解决方案。

任何人都可以帮助我,因为没有这方面的支持。

3 个答案:

答案 0 :(得分:8)

解决方案: 我试过SoundTouch库。我成功编译了android但后来我没能使用它的功能,因为我不知道如何使用这个库来加载音频。

但之后我尝试了名为Sonic的库。它主要用于演讲,因为它使用PSOLA算法来改变音高和节奏。但还可以。

答案 1 :(得分:5)

您可以在ffmpeg 1.0及更高版本中使用atempo filter

ffmpeg -i input.wav -f:a atempo=1.25 output.wav

atempo只接受介于0.5和2.0之间的值,但您可以通过链接多个过滤器来绕过限制:

ffmpeg -i input.wav -f:a atempo=2,atempo=1.5 output.wav

答案 2 :(得分:2)

音高与节奏紧密相关。你要做的事情被称为“时间拉伸”,并且是一个有点复杂的算法。您可以在线查找有关它的信息,并可以找到一个包含它的java库here,以及描述该过程的论文。