3

どうすれば実装できますか

setRate(float f) 

私のAndroid MediaPlayerの場合、第二にそれは可能ですか?

4

3 に答える 3

4

これがあなたが探している機能だと思います。

これは、コンテンツの元のサンプリング レートではなく、オーディオ データが消費および再生されるサンプリング レートを設定します。コンテンツのサンプル レートの半分に設定すると、再生時間が 2 倍になりますが、負のピッチ シフトも発生します。有効なサンプル レートの範囲は、1Hz から によって返される値の 2 倍までですgetNativeOutputSampleRate(int)

AudioTrack を使用して mp3 を直接再生したい場合は、この例を見るか、mp3 ファイルを wav 形式に変換して、AudioTrack が問題なく使用できるようにすることができます。これは、再生レートを簡単に調整したい場合に考慮する必要があるトレードオフです。

于 2012-07-23T16:35:29.790 に答える
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 デバイスを持っていませんが、これはエミュレーターで動作します。

于 2015-10-23T23:25:54.790 に答える
-1

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)

于 2012-07-23T15:46:16.883 に答える