jwplayer:如何在未观看的视频部分禁用搜索?

时间:2014-12-10 13:43:18

标签: jwplayer jwplayer6

我正在使用jwplayer 6.8.4616。我不希望用户寻找他尚未观看的视频部分,允许寻找已经观看但无法找到好解的部分。

我在Google Chrome 39.0.2171.71 + ubuntu 14.04中尝试了JWPlayer Prevent SKipping forward unless already watched。它对我不起作用,除非我在该解决方案中将超时值设置为至少1500毫秒,但如果超时太长则会变为可见。

如果不是通过javascript,可以使用自定义皮肤或插件来完成。如果不是在我的版本中,它可以在更高版本的jwplayer中完成吗?

编辑:上述方法适用于MP4视频,但不适用于HLS流。

2 个答案:

答案 0 :(得分:2)

https://github.com/jwplayer/jwplayer/issues/977中采用了另一种方法,该方法包括重写jwPlayer的seek方法。 这样,您无需等待搜索,而不必等待搜索完成然后“倒带”。

var player = jwplayer('container').setup({ file: 'video.mp4'});
player.on('ready', function() {
  const originalSeek= player.seek;
  player.seek= (newPos) => {
    if (someCheckIsValid(newPos)){
      originalSeek(newPos);
    } else {
     console.warn('sorry, you cant seek to that position');
    }
  }
}

答案 1 :(得分:0)

尝试这个更简单的嵌入,对于初学者:

<!DOCTYPE html>
<html>
<head>
    <title>Disable Seek</title>
    <script type='text/javascript' src='http://p.jwpcdn.com/6/8/jwplayer.js'></script>
    <style type="text/css">
        body { margin: 0; padding: 0 }
    </style>
</head>
<body>
<div id="thePlayer"></div>
<script type="text/javascript">
jwplayer("thePlayer").setup({
    image: "http://content.bitsontherun.com/thumbs/w5co0c24-480.jpg",
    file: "http://content.bitsontherun.com/videos/w5co0c24-hV866gPy.mp4"
});
var maxPlayPosition = 0;
var seeking = false;
jwplayer().onTime(function (event) {
    if (!seeking) maxPlayPosition = Math.max(event.position, maxPlayPosition)
}).onPlaylistItem(function () {
    maxPlayPosition = 0
}).onSeek(function (event) {
    if (!seeking) {
        if (event.offset > maxPlayPosition) {
            seeking = true;
            setTimeout(function () {
                jwplayer().seek(maxPlayPosition)
            }, 100)
        }
    } else seeking = false
});
</script>
</body>
</html>