29

私はプレーヤーアプリを開発していて、そのために使用MediaPlayerしています。

ここで、再生トラックの速度を変更したいと思います。

この機能を備えたアプリをたくさん見てきました。これどうやってするの?

4

7 に答える 7

51

API 23以降、MediaPlayerはこのメソッドを使用して再生速度を設定できます。

クラスMediaPlayer

public void setPlaybackParams (PlaybackParams params)APIレベル23で追加

PlayplayParamsを使用して再生速度を設定します。パラメータparamsPlaybackParams:再生パラメータ。内部プレーヤーエンジンが初期化されていない場合、IllegalStateExceptionをスローします。paramsがサポートされていない場合はIllegalArgumentException。

サンプルコード:

MediaPlayer mp = ...; //Whatever
float speed = 0.75f;     
mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed));

API <23については、上記(または下記)のVipulShahの回答を参照してください。

于 2016-05-07T22:26:45.517 に答える
18

MediaPlayerはこの機能を提供していませんが、SoundPoolにはこの機能があります。SoundPoolクラスには、と呼ばれるメソッドがありsetRate (int streamID, float rate)ます。APIに興味がある場合は、こちらをご覧ください。

このスニペットは機能します。

 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);
     }
 });
于 2012-06-01T12:26:04.903 に答える
16

サウンドプールは、プリロードできる比較的小さな効果音ファイルのみをサポートします。有用な長さの音楽トラックでヒープオーバーフローが発生します。

于 2012-10-22T00:45:02.687 に答える
8

今、あなたは使用することができます

mediaPlayer.setPlaybackParams(mediaPlayer.getPlaybackParams().setSpeed(speed))

API 23以降の場合!

于 2017-07-04T21:31:36.657 に答える
1

クラスはこのMediaPlayer機能を提供しません。代わりにSoundPoolクラスを使用してください。と呼ばれるメソッドがありsetRate (int streamID, float rate)ます。詳細については、これをお読みください。これは、それを操作するためのサンプルコードです。

于 2012-06-01T12:12:21.533 に答える
1

ここで言及したフローによると、 次のコードはandroid API 23(Android 6.0 Marshmallow)用です。

PlaybackParams playbackParams = new PlaybackParams();
playbackParams.setSpeed(2);
playbackParams.setPitch(1);
playbackParams.setAudioFallbackMode(
    PlaybackParams.AUDIO_FALLBACK_MODE_DEFAULT);
mMediaPlayer.setPlaybackParams(playbackParams);
于 2018-04-20T11:15:47.380 に答える
0

AndroidのExoPlayerによる速度制御

//exoPlayer.setPlaybackParameters(PlaybackParameters(//speed in float))
//EXAMPLE->
exoPlayer.setPlaybackParameters(PlaybackParameters(1.5f))
于 2021-02-11T10:10:11.473 に答える