JW播放器根据经过的时间执行操作


JW Player do action based on elapsed time

我有一个视频和一系列的视频评论。每个评论都有一个与视频相关的特定时间。比如视频1有3条评论。第15秒一个,第30秒一个,最后一个评论在第45秒

我可以显示所有的注释。然而,相反,我希望每个评论都显示在其相关的视频时间。例如,注释1应该只出现在第15秒,并持续到第30秒,然后被第二个注释取代,以此类推。

我使用JW播放器播放视频,可以获得getPosition()函数来获得视频的当前经过时间。它应该是一个简单的JavaScript代码来实现这一点,但不幸的是,我是JS的初学者。

我自己的想法来实现这一点是使用onTime函数,并为每个位置检查是否有评论在服务器或没有,如果有检索。如:

<script>
      jwplayer("container1").onTime(
           function(event) { 
            {
               var comment = get_comment_of(event.position);
               setText(comment);
               function setText(text) {
                   document.getElementById("message").innerHTML = text;
               }
            });
</script>
但是,这是一个开销很大的函数,并且会向服务器发送大量的请求。

好的,最好的解决方案是,当页面加载时,我已经在javascript数组中预加载了评论,然后在使用onTime函数发生时显示它们。这样就不需要在每个onTime帧上发送一个新的请求。由于注释已经在客户端可用

var timeArray = <?php echo json_encode($timeArray) ?>;
var commentArray = <?php echo json_encode($commentArray) ?>;
jwplayer("container1").onTime(
    function(event) {
       for (var i = 0; i < timeArray.length; i++)
       {
           var time = timeArray[i]
           var comment = commentArray[i];
           if (event.position >= time) {
               setText(comment);
           }
       }

       function setText(text) {
           document.getElementById("message").innerHTML = text;                     }
       }
);