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);
}
});