如何设置api的mediaPlayer速度低于23

时间:2016-07-19 07:21:31

标签: android android-mediaplayer

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)

1 个答案:

答案 0 :(得分:0)

使用媒体编解码器类。这个类可以对它进行解码,你可以在解码数据上使用Audio Track来渲染(播放)它。但是您需要根据速度要求跳过样本以特定速度播放。这种方法应该有效。请参阅android开发者资源中的mediacodec和audiotrack。