player.setPlaybackParams(player.getPlaybackParams().setSpeed(0.5f));
这需要api电话23
我试图使用SoundPool,但它不如MediaPlayer那么高效SoundPool的任何替代音频播放
final float playbackSpeed=1.5f;
final SoundPool soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
final String path=Environment.getExternalStorageDirectory().getAbsolutePath() + "/folioreader/audio"+".mp3";
final int soundId = soundPool.load(path, 1);
AudioManager mgr = (AudioManager) mHalfSpeed.getContext().getSystemService(Context.AUDIO_SERVICE);
final float volume = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener()
{
@Override
public void onLoadComplete(SoundPool arg0, int arg1, int arg2)
{
soundPool.play(soundId, volume, volume, 1, 0, playbackSpeed);
}
});
soundPool.pause(soundId)
答案 0 :(得分:0)
使用媒体编解码器类。这个类可以对它进行解码,你可以在解码数据上使用Audio Track来渲染(播放)它。但是您需要根据速度要求跳过样本以特定速度播放。这种方法应该有效。请参阅android开发者资源中的mediacodec和audiotrack。