android - 如何在android中改变音频的音调而不改变其持续时间(节奏,速度)?

标签 android android-studio android-mediaplayer

我在改变音频音调并保持其速度(节奏)时遇到问题。我想改变音频的音高,同时不改变其持续时间。对于 Android 6.0 及更高版本,有一个简单的方法可以做到这一点。我们所需要的就是使用这一行:

mediaPlayer.setPlaybackParams(mediaPlayer.getPlaybackParams().setPitch(1.7f));

但是对于较低版本的Android如何做到这一点?
有什么简单的方法可以做到这一点吗?

或者也许有一些外部库可以帮助我?
我发现例如SoundTouch,但我无法将其添加到 Android Studio 项目中..

因此,如果有简单的方法可以改变低于 6.0 版本的 Android 的音调,我真的很感激有人能给我一个解决方案。
或者,如果没有像 Android 6.0 及更高版本那么简单的方法,如果有人为我提供其他有用的解决方案(例如库或其他),我将不胜感激。如果有原生库,最好有人解释一下如何将其添加到 Android Studio 项目中。

对不起我的英语不好!谢谢!

最佳答案

我认为可以通过使用 setPlayBackRate 更改其播放速率来改变音高。我不了解 SoundTouch,但我发现 SoundPool它有 setRate 方法,允许更改 playBackrate。

这是 SoundPool 文档中的 qoute

Once the sounds are loaded and play has started, the application can trigger sounds by calling SoundPool.play(). Playing streams can be paused or resumed, and the application can also alter the pitch by adjusting the playback rate in real-time for doppler or synthesis effects.

The playback rate allows the application to vary the playback rate (pitch) of the sound. A value of 1.0 means play back at the original frequency. A value of 2.0 means play back twice as fast, and a value of 0.5 means playback at half speed.

关于android - 如何在android中改变音频的音调而不改变其持续时间(节奏,速度)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573984/

相关文章:

Android MediaPlayer Streaming YouTube 音频流意外的大声静态

android - 使用 linux pc 安装 Apache POI for android

android - 如何阻止 OkHttp 在 Android 中记录多部分/表单数据上传

Android >=5.0 MediaPlayer 准备失败

android - 如何修复错误 : No signature of method: build_ap86oam3dut3pxce3x49rdtma. android()?

java - 从 Activity 返回时如何部分填充进度条?

Android:恢复 Activity

Android使布局相互重叠

android - 通过结构测试版更新应用程序说 "Do you want to uninstall this app?"

android - Firebase 崩溃报告或不同的 Crashlytics API key 以减轻与 App 中 Crashlytics 的冲突