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

问题描述 投票:0回答:4

我已经成功地在我的 android 项目中使用 ffmpeg 和 AudioTrack 类来播放音频文件。我可以使用 AudioTrack 类 setRate 方法更改音频的速度。但它也会改变音频的音调,我只想改变音频的节奏,但我在网上找不到解决方案。

任何人都可以帮助我,因为没有对此的支持。

android audio android-ndk ffmpeg audiotrack
4个回答
15
投票

您可以在 ffmpeg 1.0 及更高版本中使用 atempo 过滤器

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

8
投票

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

但之后我尝试了名为 Sonic 的库。它基本上用于语音,因为它使用 PSOLA 算法来改变音调和节奏。但没关系。


2
投票

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


0
投票

@Lri 的答案对我不起作用,它显示错误:

'atempo=1.2' is not a suitable output format

下一个命令可以正常工作:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

取自ffmpeg.org

© www.soinside.com 2019 - 2024. All rights reserved.