Android中如何实现播放音频设置不同的播放速率(MediaPlayer SoundPool AudioTrack OpenSL ES)

目前我在项目中需要对播放的音频设置不同的速率(0.8、1、1.3倍),存在如下的疑惑:

1.使用MediaPlayer,这个类是使用的最广泛的,但不提供相应的设置速率的方法。

2.SoundPool,适合播放游戏中的急促 短暂的音效,只能播放大概10秒的音频,且不提供读完音频的回调方法。

3.AudioTrack,这个类可以进行速率的设置,但只能播放已经解码的PCM文件流,如果是文件的话只支持wav格式音频,目前项目中的文件都是MP3格式的,需要转换以及解码。

4.OpenSL ES是通过JNI和NDK进行底层实现的,自己去实现和集成并封装到自己的项目中,难度会比较大,但这个方法可能也是最彻底的。


个人认为有两种方法:

1.最笨的方法,增加两套对应速率(0.8、1.3倍)的音频文件,一是会增加相关部门的制作资源的工作量。二是增加用户的存储控件。

2.通过OPenSL ES的集成到项目中去,如果是这样的话就需要:一是把JNI和NDK打通,二是封装集成到现有的项目中,之前的MediaPlayer不用,上一句和下一句的切换以及其他的功能需要重新进行封装。

Android中如何实现播放音频设置不同的播放速率(MediaPlayer SoundPool AudioTrack OpenSL ES)_第1张图片
Android中如何实现播放音频设置不同的播放速率(MediaPlayer SoundPool AudioTrack OpenSL ES)_第2张图片
上图为某APP的设置速率的效果图。特此通过CSDN来向各位大神请教如何实现,给我加以点拨,不胜感激。

你可能感兴趣的:(Android中如何实现播放音频设置不同的播放速率(MediaPlayer SoundPool AudioTrack OpenSL ES))