JWPlayer Предотвратить SKipping вперед, если уже не смотрел - PullRequest
5 голосов
/ 08 сентября 2011

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

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

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

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

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

Спасибо

Ответы [ 2 ]

7 голосов
/ 01 августа 2012

Я нашел это некоторое время назад, вероятно, на форуме 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;
    }   
 });
2 голосов
/ 03 апреля 2019

Некоторое время использовал ответ @ 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;
});
...