YouTube player JS API seekTo функция не работает - PullRequest
8 голосов
/ 31 марта 2012

Я пытаюсь использовать YouTube Chromeless Player через JS API, и у меня возникают проблемы с функцией seekto ().

Проблема в том, что иногда (я не могу сказать, когда проблема возникает)вызов функции seekTo () назад к точке в видео, которая не загружена, не возвращается, а остается в текущем времени.

Это то, что я делаю (представьте, что продолжительность видео составляет 240 секунд):

  1. Я начинаю проигрывать видео -> loadVideoById ().
  2. Я двигаюсь вперед (скажем так) к середине видео -> seekTo (120)
  3. Видео корректно переходит в положение, которое я спросил.
  4. Я пытаюсь переместиться назад на 25% времени видео -> seekTo (60)
  5. Иногда видео переходит на 60, но большечасто он возвращается только к 120.

Итак, кто-нибудь еще имеет эту проблему?

Ответы [ 4 ]

4 голосов
/ 11 июля 2012

Размещение некоторого кода поможет нам помочь вам, но вы пробовали player.seekTo(60, true); - второй параметр важен - установка его в значение true заставит проигрыватель отправить новый запрос на сервер для видео.

0 голосов
/ 05 декабря 2013

Будьте осторожны, в документе написано:

"Игрок перейдет к ближайшему ключевому кадру до этого времени , если игрок уже не загрузил ту часть видео, к которой пользователь ищет . В этом случае игрок перейдет к ближайшему ключевой кадр до или после указанного времени в соответствии с методом seek () объекта NetStream проигрывателя Flash (дополнительную информацию см. в документации Adobe.) "

https://developers.google.com/youtube/js_api_reference?hl=fr#seekTo

0 голосов
/ 16 апреля 2013

У меня та же проблема, но ни одно из этих решений не помогло мне.В итоге я использовал это, чтобы заставить его работать со средством просмотра HTML5 (Chrome и Firefox)

function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING){  // for Chrome and Firefox to "restart" properly
        var ct = player.getCurrentTime();
        var dur = player.getDuration();

        if (ct > (dur-.5) ){
            player.seekTo(0, true);
        }
    }
}
0 голосов
/ 18 января 2013

У меня была та же проблема, которую вы описали.Я обнаружил, что если вы запрашиваете API для продолжительности видео, а после этого ищите обратное местоположение, то, похоже, оно работает.

Например, это мой тест:

var duration = ytplayer.getDuration();
ytplayer.seekTo(0, true);

Он показал мне, что всегда возвращался к исходной позиции.

...