如何为Android MediaPlayer设置setRate?

时间:2012-07-23 15:43:42

标签: android

如何实施

setRate(float f) 

对于我的Android MediaPlayer,其次是可行的吗?

3 个答案:

答案 0 :(得分:4)

我相信this是您正在寻找的功能。

设置消耗和播放音频数据的采样率,而不是内容的原始采样率。将其设置为内容的采样率的一半将导致回放持续两倍的长度,但也将导致负的音高移位。有效采样率范围为1Hz至getNativeOutputSampleRate(int)返回值的两倍。

如果你想使用AudioTrack直接播放mp3,你可以查看this示例或将你的mp3文件转换为wav格式,这使得AudioTrack可以毫不费力地使用它。如果您想轻松调整播放速率,这是您应该考虑的权衡。

答案 1 :(得分:0)

Android 6.0为PlaybackParams添加MediaPlayer,因此您现在可以执行此操作:

String recordingPath = recordingDirectory + File.separator + "music.mp3";
MediaPlayer audioPlayer = MediaPlayer.create(getApplicationContext(), Uri.parse(recordingPath));
audioPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
PlaybackParams params = new PlaybackParams();
params.setSpeed(0.75f);
audioPlayer.setPlaybackParams(params);
audioPlayer.start();

我还没有Android 6设备,但这在模拟器中适用于我。

答案 2 :(得分:-1)

根据Android开发人员文档,您可能不得不使用SoundPool。

Android Developer: Media SoundPool-setRate

public final void setRate (int streamID, float rate)

  

更改播放速度。播放速率允许应用程序变化   声音的播放速率(音高)。值1.0表示播放   在原始频率。值为2.0表示播放两次   快速,值为0.5表示以半速播放。如果是流   不存在,它将没有效果。

     

参数

     

streamID :play()函数返回的streamID

     

rate :播放率(1.0 =正常播放,范围0.5到2.0)