如何实施
setRate(float f)
对于我的Android MediaPlayer,其次是可行的吗?
答案 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)