Подтвердить что ты не робот

Android 6.0 - установка скорости видео с помощью PlaybackParams

У меня есть проблемы с тем, как установить PlaybackParams для установки скорости видео:

public PlaybackParams getPlaybackParams ()

Добавлен в уровень API 23
 Возвращает скорость воспроизведения с помощью PlaybackParams.

PlaybackParams setSpeed (float speed) //Sets the speed factor.

Возвращает:
используемая скорость воспроизведения.
Выбрасывает исключение IllegalStateException:
если внутренний синхронизатор или звуковая дорожка не были инициализированы.

Это мой код:

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 
{
    @Override
    public void onPrepared(MediaPlayer mp) 
    {
        mp.setPlaybackParams(new PlaybackParams().setSpeed(1.f));

        if (mPlaybackState == PlaybackState.PLAYING) { mVideoView.start();}
    }
});
4b9b3361

Ответ 1

Вы получаете исключение IllegalStateException при вызове метода setPlayParams, потому что вы не делаете PlaybackParams params = mp.getPlaybackParams(), задаете скорость, а затем передаете ее в mp.setPlaybackParams()! Установите скорость DIRECTLY, называя mp.getPlayParams()!

MediaPlayer mp = ...; 
float speed = 0.55f;     
mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed));

Ответ 2

После многих попыток я найду решение.

Пример, как использовать VideoView

final VideoView mVideoView = findViewById(R.id.videoView);
mVideoView.setVideoPath(Environment.getExternalStorageDirectory() + "/bluetooth/test.webm"); //Path of your file video
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
    @Override
    public void onPrepared(MediaPlayer mp)
    {
        mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(0.55f));
        mVideoView.start();
    }
});
MediaController media = new MediaController(this); //this is for play and restart play manually
media.setAnchorView(mVideoView);
mVideoView.setMediaController(media);
//mVideoView.start();