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();}
}
});
Ответы
Ответ 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();