どうすれば実装できますか
setRate(float f)
私のAndroid MediaPlayerの場合、第二にそれは可能ですか?
これがあなたが探している機能だと思います。
これは、コンテンツの元のサンプリング レートではなく、オーディオ データが消費および再生されるサンプリング レートを設定します。コンテンツのサンプル レートの半分に設定すると、再生時間が 2 倍になりますが、負のピッチ シフトも発生します。有効なサンプル レートの範囲は、1Hz から によって返される値の 2 倍までですgetNativeOutputSampleRate(int)
。
AudioTrack を使用して mp3 を直接再生したい場合は、この例を見るか、mp3 ファイルを wav 形式に変換して、AudioTrack が問題なく使用できるようにすることができます。これは、再生レートを簡単に調整したい場合に考慮する必要があるトレードオフです。
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 デバイスを持っていませんが、これはエミュレーターで動作します。
Android 開発者向けドキュメントに基づいて、代わりに SoundPool を使用する必要がある場合があります。
Android 開発者: Media SoundPool-setRate
public final void setRate (int streamID, float rate)
再生速度を変更します。再生レートにより、アプリケーションはサウンドの再生レート (ピッチ) を変更できます。1.0 の値は、元の周波数での再生を意味します。値 2.0 は 2 倍の速度で再生することを意味し、値 0.5 は半分の速度で再生することを意味します。ストリームが存在しない場合、効果はありません。
パラメーター
streamID : play() 関数によって返される streamID
rate : 再生レート (1.0 = 通常の再生、範囲 0.5 ~ 2.0)