在Exoplayer

时间:2015-08-11 16:43:10

标签: android exoplayer

我正在寻求实现一种具有变速播放(1.0x,1.25x,1.5x)的音频播放器,就像目前市场上的典型有声读物播放器一样。我想使用Google的Exoplayer库作为我的音频层库,但它们似乎不支持变速播放。关于如何实现这个的任何想法,或任何支持它的扩展?

5 个答案:

答案 0 :(得分:14)

功能setPlaybackSpeed()已删除,现在您通过以下方式设置播放速度:

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

speed是一个浮点数。正常速度为1f,速度加倍为2f

答案 1 :(得分:2)

Kotlin扩展解决方案

轻松访问并在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)
    }

答案 2 :(得分:0)

尝试一下

我遵循了所有答案,但没有任何效果,因此我尝试了以下解决方案,它对我有用

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

答案 3 :(得分:0)

在 Exoplayer 2.14.0 版

像这样直接传递浮点值。

simpleExoPlayer?.setPlaybackSpeed(1.0f)

答案 4 :(得分:-1)

你应该看看这个对我来说非常有用的项目: https://github.com/AmrMohammed89/exoplayer2.4.0_speedup

在SimpleExoPlayer中,我实现了下一个方法:

 private final ExoPlayer player;
private float playbackSpeed;

float SPEED_NORMAL = 1f;
float SPEED_MEDIUM = 1.5f;
float SPEED_HIGH = 2f;


 @Override
public float getPlaybackSpeed() {
    return playbackSpeed;
}

@Override
public void setPlaybackSpeed(float speed) {
    playbackSpeed = speed;
    player.setPlaybackSpeed(speed);
}

@Override
public void changePlaybackSpeed() {
    if (playbackSpeed == SPEED_MEDIUM) {
        player.setPlaybackSpeed(SPEED_HIGH);
        playbackSpeed = SPEED_HIGH;
    } else if (playbackSpeed == SPEED_HIGH) {
        player.setPlaybackSpeed(SPEED_NORMAL);
        playbackSpeed = SPEED_NORMAL;
    } else {
        player.setPlaybackSpeed(SPEED_MEDIUM);
        playbackSpeed = SPEED_MEDIUM;
    }
}

当我试图获得最后保存的速度时,由于存在错误,我设置并保存了速度。因此,遵循该机制,它将完美地工作。

干杯