安卓速度/播放速度变化



我正在创建一个需要实时更改播放速率/速度的Android应用程序。我已经在互联网上搜索了很多,并看到了许多解决方案,包括OpenSL ES for Android 教程如何使用 ffmpeg 更改音频速度和音高个性化?

由于我对开发和Android相对较新,因此其中一些根本超出了我的选择范围。

其中许多示例都谈到了 Soundpool,但此 API 不适用于大文件。

在浏览了API和类之后,我找到了方法setPlaybackRate(int sampleRateInHz)在音轨类下。http://developer.android.com/reference/android/media/AudioTrack.html#setPlaybackRate(整型)

然而,在所有这些在线示例中,他们都没有提到这一点。我错过了什么,可以使用吗?

任何帮助都非常感谢

API 23开始,MediaPlayer可以使用此方法设置播放速度。

类媒体播放器

public void setPlaybackParams (PlaybackParams params) 在 API 中添加 23级

使用播放参数设置播放速率。参数参数 播放参数:播放参数。抛出非法状态异常,如果 内部播放器引擎尚未初始化。 IllegalArgumentException 如果不支持参数。

示例代码:

MediaPlayer mp = ...; //Whatever
float speed = 0.75f;     
mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed));

setPlaybackRate()确实可以使用,但可能不是您要找的。

假设您有一个 44100 的音频流。您可以使用此功能将播放速率设置为 22050 Hz,这意味着样本将以一半的速率馈送到音频输出,并且确实会减慢音乐速度。缺点是音频的频率也会下降到一半,因为样本以一半的速率馈送。

目前没有直接的Android API来延长时间。这些算法在数学方面非常繁重,即使你可以用Java编写它们,性能也会很糟糕。

最好的方法是使用 JNI 在C++中寻找实现,这可能包括像 ffmpeg 这样的库。

相关内容

  • 没有找到相关文章

最新更新