【问题标题】:JWPlayer Prevent SKipping forward unless already watchedJWPlayer 防止向前跳过,除非已经观看
【发布时间】:2011-09-08 12:30:37
【问题描述】:

我使用的是 JWPlayer 5.4,它是使用 javascript API 在页面上设置的。

我想做的是让用户只有在已经播放了视频的那部分时才能通过搜索栏快进/快退。

因此,如果用户是第一次观看视频,他们不能跳过当前位置,但是他们可以在视频播放的位置前后搜索。

我正在努力使用 API onTime 事件等来尝试计算数学以使其工作。

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

谢谢

【问题讨论】:

标签: api jwplayer seek


【解决方案1】:

我不久前发现了这个,可能是在 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;
    }   
 });

【讨论】:

  • 同样适用于 jwplayer7,只需要将 api 更改为 .on('seek')
【解决方案2】:

已经使用 @mal 的答案有一段时间了,但发现它在某些极端情况下会中断(例如单击并拖动)。可能是因为我们在 JW 播放器 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;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2012-07-15
    • 2015-07-01
    • 2013-04-30
    • 2017-11-27
    • 1970-01-01
    相关资源
    最近更新 更多