我已经成功地使用FFmpeg和AudioTrack类在我的Android项目中播放音频文件。我可以使用AudioTrack类的setRate方法改变音频的速度。但它也会改变音频的音调,我只想改变音频的节奏,但是我在网络上找不到解决方案。
希望有人能帮助我解决这个问题,因为目前没有相关支持。
希望有人能帮助我解决这个问题,因为目前没有相关支持。
您可以在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
解决方案: 我尝试了SoundTouch库。我已经成功为Android编译它,但是我无法使用它的功能,因为我不知道如何使用这个库来加载音频。
但是之后我尝试了一个名为Sonic的库。它基本上用于语音,因为它使用PSOLA算法来改变音高和节奏。但没关系。
回答者 @Lri 给出的方法对我无效,显示错误:
'atempo=1.2' is not a suitable output format
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
ffmpeg -i input.wav -filter:a atempo=1.25 output.wav
。 - Userffmpeg -i input.wav -af atempo=1.25 output.wav
可以将音频文件input.wav加速1.25倍并输出为output.wav。 - Shovalt