答案 0 :(得分:31)
从API 23开始,MediaPlayer可以使用this method设置播放速度。
Class MediaPlayer
public void setPlaybackParams (PlaybackParams params)
在API中添加 等级23使用PlaybackParams设置播放速率。参数参数 PlaybackParams:回放参数。如果是,则抛出IllegalStateException 内部播放器引擎尚未初始化。 如果不支持params,则为IllegalArgumentException。
示例代码:
MediaPlayer mp = ...; //Whatever
float speed = 0.75f;
mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed));
对于API< 23 ,请参阅上面(或下面)的Vipul Shah's answer。
答案 1 :(得分:15)
MediaPlayer不提供此功能,但SoundPool具有此功能。
SoundPool类有一个名为setRate (int streamID, float rate)
的方法。如果您对API have a look here感兴趣。
此代码段可以使用。
float playbackSpeed=1.5f;
SoundPool soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundId = soundPool.load(Environment.getExternalStorageDirectory()
+ "/sample.3gp", 1);
AudioManager mgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
final float volume = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener()
{
@Override
public void onLoadComplete(SoundPool arg0, int arg1, int arg2)
{
soundPool.play(soundId, volume, volume, 1, 0, playbackSpeed);
}
});
答案 2 :(得分:15)
soundpool仅支持可预加载的相对较小的音效文件。你将获得任何有用的音乐曲目堆溢出。
答案 3 :(得分:4)
现在你可以使用
mediaPlayer.setPlaybackParams(mediaPlayer.getPlaybackParams().setSpeed(speed)
用于API 23及更高版本!
这是post on my blog,其中包含更多详情
答案 4 :(得分:1)
MediaPlayer
类不提供此功能。而是使用SoundPool
类。它有一个名为setRate (int streamID, float rate)
的方法。请阅读this以获取更多信息。这是sample code,您可以使用它。
答案 5 :(得分:0)
PlaybackParams playbackParams = new PlaybackParams();
playbackParams.setSpeed(2);
playbackParams.setPitch(1);
playbackParams.setAudioFallbackMode(
PlaybackParams.AUDIO_FALLBACK_MODE_DEFAULT);
mMediaPlayer.setPlaybackParams(playbackParams);
答案 6 :(得分:0)
Android 中 ExoPlayer 的速度控制
//exoPlayer.setPlaybackParameters(PlaybackParameters(//speed in float))
//EXAMPLE->
exoPlayer.setPlaybackParameters(PlaybackParameters(1.5f))