Управление скоростью MediaPlayer в Android

Я разрабатываю приложение для игрока, и я используюMediaPlayer для этого.

Теперь я хочу изменить скорость воспроизведения трека.

Я видел очень много приложений с такой функциональностью. Как я могу это сделать?

Ответы на вопрос(6)

MediaPlayer класс не предоставляет эту функциональность. Вместо этого используйтеSoundPool учебный класс. У него есть методsetRate (int streamID, float rate), Читатьэтот для дальнейшей информации. Вотобразец кода для вас, чтобы работать с этим.

 01 июн. 2012 г., 14:26
Вы можете искать учебники наGoogle, Вы найдете много примеров для этого.
 Krishna Suthar01 июн. 2012 г., 14:21
Да уж. Затем я могу установить другие функции, такие как следующий трек, предыдущий трек, управление звуком, вперед, назад, сон, повтор, случайное воспроизведение в SoundPool? Пожалуйста, дайте мне некоторую идею.
Решение Вопроса

MediaPlayer does not предоставить эту функцию, но 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);
     }
 });
 01 июн. 2012 г., 14:28
Нет MediaPlayer не предоставляет эту функциональность.
 Krishna Suthar01 июн. 2012 г., 14:27
Да, я попробовал это. Но возможно ли это с MediaPlayer?
 13 окт. 2014 г., 08:46
это будет работать с видео ??? или у вас есть какие-либо решения для ускорения видео.
 20 дек. 2016 г., 15:24
Если я правильно понял, это означает, что высота звука также будет изменена? Есть ли способ регулировки скорости без изменения высоты тона?
 Krishna Suthar01 июн. 2012 г., 14:38
Хорошо. Большое спасибо ... Наслаждайтесь :)

Beginning API 23MediaPlayer может установить скорость воспроизведения, используяЭтот метод.

Class MediaPlayer

public void setPlaybackParams (PlaybackParams params) Added in API level 23

Sets playback rate using PlaybackParams. Parameters params PlaybackParams: the playback params. Throws IllegalStateException if the internal player engine has not been initialized. IllegalArgumentException if params is not supported.

Образец кода:

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

For API < 23, Ссылаться наОтвет Випул Шаха выше (или ниже).

 22 июл. 2017 г., 19:40
Для тех из вас, кто получает исключение IllegalStateException при вызове «setPlayParams»; Убедитесь, что вы не выполняете PlaybackParams params = mp.getPlaybackParams (), установите скорость, а затем передайте ее в mp.setPlaybackParams ()! Устанавливайте скорость ПРЯМО при вызове mp.getPlayParams ()! Точно так же, как в ответе Шишира Гупты!

Теперь вы можете использовать

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

для API 23 и выше!

Вотпост в моем блоге с более подробной информацией

 05 июл. 2017 г., 01:41
Кроме того, этот ответ, кажется, уже описан в ответе @ ShishirGupta выше.
 04 июл. 2017 г., 23:35
Обратите внимание, если вы хотите продвигать свой собственный продукт / блог, который выmust disclose your affiliation in the answerиначе ваш ответ может быть помечен как спам. Пожалуйста, прочитайтеHow to not be a spammer
PlaybackParams playbackParams = new PlaybackParams();
playbackParams.setSpeed(2);
playbackParams.setPitch(1);
playbackParams.setAudioFallbackMode(
    PlaybackParams.AUDIO_FALLBACK_MODE_DEFAULT);
mMediaPlayer.setPlaybackParams(playbackParams);
 20 апр. 2018 г., 16:25
Добавьте некоторые объяснения к вашему ответу. Код только ответ не очень полезен.

Soundpool поддерживает только относительно небольшие файлы звуковых эффектов, которые можно предварительно загрузить. Вы получите переполнение кучи с любой полезной музыкальной дорожкой.

 07 дек. 2015 г., 03:21
это уверен? Кто-нибудь может подтвердить этот ответ? Благодарю.

Ваш ответ на вопрос