Android中如何实现播放音频设置不同的播放速率(MediaP
2016-10-18 本文已影响0人
开水王
目前我在项目中需要对播放的音频设置不同的速率(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不用,上一句和下一句的切换以及其他的功能需要重新进行封装。
![](https://img.haomeiwen.com/i3346279/c4ee1513c9ecb8b6.png)
![](https://img.haomeiwen.com/i3346279/079f0794bb640394.png)