JWPlayer Предотвратить SKipping вперед, если уже не смотрел

Я использую JWPlayer 5.4, и он настраивается на странице с использованием API javascript.

Я хотел бы сделать так, чтобы пользователи могли перематывать вперед / назад только через панель поиска, если они уже воспроизвели эту часть видео.

Таким образом, если пользователь смотрит видео в первый раз, он не может перейти за пределы текущей позиции, однако он может искать вперед и назад, где до этого воспроизводилось видео.

Я борюсь с событиями API onTime и т. Д., Чтобы попытаться разработать Math, чтобы сделать эту работу.

Кто-нибудь знает, как это можно сделать.

Спасибо

3 ответа

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

var maxPlayPosition = 0.0;
var seeking = false;

jwplayer().onTime(function(event) 
{
    if (!seeking) 
    {
        maxPlayPosition = Math.max(event.position, maxPlayPosition); 
    }
})
.onPlaylistItem(function()
{
    maxPlayPosition = 0.0;
})   // consider using only if you have playlists
.onSeek(function (event) 
{
    if (!seeking) 
    {
        if (event.offset > maxPlayPosition) 
        {
            seeking = true;
            setTimeout(function ()
            {  
               jwplayer().seek(maxPlayPosition);
            }, 100);
        }
    } 
    else 
    {
        seeking = false;
    }   
 });

Некоторое время использовал ответ @mal, но обнаружил, что он ломается для некоторых крайних случаев (например, щелчок и перетаскивание). Может быть потому, что мы на JW Player 8?

Во всяком случае, есть модифицированное решение, которое покрывает их довольно хорошо, если кто-то все еще ищет ответы на это. Полагается на искомый обработчик, который срабатывает после того, как происходит поиск.

var seeking = false;
var maxPlayPosition = 0;

jwplayer().on('time', function (event) {
    if (!seeking) {
        maxPlayPosition = Math.max(event.position, maxPlayPosition);
    }
}).on('seek', function (event) {
    seeking = true;
}).on('seeked', function (event) {
    var pos = jwplayer().getPosition();
    if (pos > maxPlayPosition) {
        jwplayer().seek(maxPlayPosition);
    }
    seeking = false;
});

Вот что сработало для меня

      var maxPlayPosition = 0.0;
jwplayer().on('time', function (event) {
        var position = jwplayer().getPosition();

        if (currentposition < maxPlayPosition + 1 && currentposition > maxPlayPosition) {
            maxPlayPosition = currentposition;
        }
        if (currentposition > maxPlayPosition) {
            jwplayer().seek(maxPlayPosition);
        }
});
Другие вопросы по тегам