Changing playback speed in Exoplayer

Solution 1:

The function setPlaybackSpeed() was removed and now you set the playback speed via:

    PlaybackParameters param = new PlaybackParameters(speed);
    mExoPlayer.setPlaybackParameters(param);

speed is a float number. Normal speed is 1f and double the speed would be 2f.

Solution 2:

All you need is https://github.com/waywardgeek/sonic/blob/master/Sonic.java

If you look at MediaCodecAudioTrackRenderer.java, you can get the output buffer (decoded by MediaCodec) from ExoPlayer in method processOutputBuffer and process it through Sonic.java accordingly before sending it to AudioTrack.

Following document explains how to use libsonic https://github.com/waywardgeek/sonic/blob/master/doc/index.md

Solution 3:

Kotlin Extension Solution

Make it easy to access and set this reliably across your app in Kotlin

// To set
player.playbackSpeed = 2f

var SimpleExoPlayer.playbackSpeed: Float
    get() = playbackParameters?.speed ?: 1f
    set(speed) {
        val pitch = playbackParameters?.pitch ?: 1f
        playbackParameters = PlaybackParameters(speed, pitch)
    }

Solution 4:

Try This

I have followed all the answer nothing worked, so i have tried the below solution, it works for me

PlaybackParams param = new PlaybackParams();
param.setSpeed(1f);// 1f is 1x, 2f is 2x 
exoPlayer.setPlaybackParams(param);