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

Функция VideoView seekto() чрезвычайно непоследовательная

Я пытаюсь найти конкретное место в видео на Android, и я полностью застреваю из-за несоответствий, которые он проявляет в своем поведении. Вот список вещей, которые я сделал

  • VideoView.Seekto отправляется на 5:19 для одного видео, 5:17 для одного видео и 5:32 для другого за одни миллисекунды (326000 мс)!
  • Поскольку VideoView не поддерживает onSeekListener, я изменил источник VideoView и дополнительную поддержку для него. Тем не менее, он не останавливается и начните искать, откуда я хочу - всегда есть отставание! onSeekListener вызывается немедленно через 6 секунд, прежде чем я захочу остановиться. Во многих случаях панель поиска показывает правильное время и внезапно возвращается несколько секунд, даже если я звоню video.start from onSeekCompleteListener

Почему это так непоследовательно? Есть ли определенный способ поиска того, куда вы хотите пойти в миллисекундах в видеообъявлениях? Я знаю, что должен использовать MediaPLayer + Surface, но поскольку VideoView - это всего лишь оболочка из двух, я модифицирую его у источника, но безрезультатно.

Мне это известно: http://code.google.com/p/android/issues/detail?id=9135 Но есть ли способ обойти это и иметь определенный способ

1.) Ищет точное время в миллисекундах

2.) Приостановка и возобновление в точное время?

4b9b3361

Ответ 1

Вам нужно подождать завершения поиска.

VideoView не имеет OnSeekCompleteListener(), но вы можете получить доступ к MediaPlayer из метода onPrepared VideoView, а затем установить OnSeekCompleteListener, например:

videoView.setOnPreparedListener(new OnPreparedListener() { 
    @Override 
    public void onPrepared(MediaPlayer mp) {

        mp.setOnSeekCompleteListener(new OnSeekCompleteListener() {
            @Override 
            public void onSeekComplete(MediaPlayer mp) {
                //Seek completed. Move seekbar
            } 
        }); 

    } 
}); 

Ответ 2

Я знаю, что это не правильное решение вашего вопроса, но посмотрите на эту библиотеку, которая выполняется над просмотром видео по умолчанию Google

https://github.com/brianwernick/ExoMedia

Он имеет все функциональные возможности и многое другое, которые поддерживаются видео по умолчанию по умолчанию.

Вы можете использовать это видео и emVideoView.seekTo(1000); для перехода на 1000 миллисекунд в видео. Вы также можете setOnSeekCompletionListener выполнить процесс, когда поиск завершен.