JWPlayer防止向前跳过,除非已经观看过

时间:2011-09-08 12:30:38

标签: api jwplayer seek

我正在使用JWPlayer 5.4并使用javascript API在页面上进行设置。

我想做的是,只有当用户已经播放了视频的这一部分时,用户才可以通过搜索栏快进/重新播放。

因此,如果用户第一次观看视频时他们无法跳过当前位置,那么他们可以向前和向后搜索视频播放的位置。

我正在努力解决API onTime事件等问题,试图通过算法来完成这项工作。

有谁知道如何做到这一点。

由于

2 个答案:

答案 0 :(得分:7)

我发现这一段时间,可能是在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;
    }   
 });

答案 1 :(得分:2)

使用@mal的答案已有一段时间了,但是发现在某些极端情况下(例如单击和拖动)它已经中断了。可能是因为我们使用的是JW Player 8?

无论如何,如果有人仍在寻找答案,可以得到一种经过改进的解决方案,将其覆盖得很好。依靠seeked处理程序,该处理程序在搜索发生后触发。

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