【问题标题】:Ooyala Player Event - Notification when player reaches a certain point of the videoOoyala 播放器事件 - 当播放器到达视频的某个点时发出通知
【发布时间】:2012-07-03 03:50:26
【问题描述】:

我深入研究了 Ooyala Player JS API,寻找当当前正在播放的视频达到(比如说,它的长度的 75%)时触发的事件。

Ooyala 提供了一种方法来查询某个视频有多少 0%、25%、50%、75% 和 100% 的观看次数,但我找不到做我想做的事的方法。

我已经检查了http://support.ooyala.com/developers/documentation/concepts/book_api_player.html 的所有内容

以前有人经历过吗? 您知道其他可以提供帮助的信息来源吗?

提前致谢。

【问题讨论】:

    标签: javascript api ooyala


    【解决方案1】:
    var videoPlayer = OO.Player.create('Player', embedcode, {
        autoplay: true,
        onCreate: function (player) {
            mesb = player.mb;
        }    
    });
    
    mesb.subscribe(OO.EVENTS.PLAYBACK_READY, 'example', _.bind(this.videoPlaying, this));
    mesb.subscribe(OO.EVENTS.PLAYHEAD_TIME_CHANGED, 'example', _.bind(this.playheadTime, this));
    function videoPlaying() {
        var title, desc, embed, dur;
        var vData = videoPlayer.getItem();
        dur = vData.time;
    
    }
    
    function playheadTime() {
        phPos = videoPlayer.getPlayheadTime();
        if (phPos > 90) {
            alert('you are 90 seconds in to the video!');
        }
    

    dur 会给你视频的总时间。 phPos 将为您提供当前的播放头时间。

    您应该能够进行数学运算,并让视频在达到一定百分比后触发操作。在我的示例中,我设置了在视频达到 90 秒时发出警报。

    【讨论】:

      【解决方案2】:
      I think this will work
      var videoPlayer = OO.Player.create('Player', embedcode, {
          autoplay: true,
          onCreate: function (player) {
              mesb = player.mb;
          }    
      });
      
      mesb.subscribe(OO.EVENTS.PLAYBACK_READY, 'example', _.bind(this.videoPlaying, this));
      mesb.subscribe(OO.EVENTS.PLAYHEAD_TIME_CHANGED, 'example', _.bind(this.playheadTime, this));
      function videoPlaying() {
          var title, desc, embed, dur;
          var vData = videoPlayer.getItem();
          dur = vData.time;
      
      }
      
      function playheadTime() {
          if((videoPlayer.getPlayheadTime())>= (videoPlayer.getDuration()*0.25)){ 
            alert('play 25%') 
          }
          if((videoPlayer.getPlayheadTime())>= (videoPlayer.getDuration()*0.50)){ 
            alert('play 50%') 
          }
          if((videoPlayer.getPlayheadTime())>= (videoPlayer.getDuration()*0.75)){ 
            alert('play 75%') 
          }
          if((videoPlayer.getPlayheadTime())>= (videoPlayer.getDuration()*1.00)){ 
            alert('play 100%') 
          }
      }
      

      【讨论】:

        【解决方案3】:

        早期答案中提供的代码对我有帮助,但需要一些修改。需要将其包装在OO.ready 中,并进行修改以使代码准确调用4 次:完成25%、50%、75% 和100%。

        var mplayer, mesb, dur, title;
        OO.ready(function() {
          var lastTriggerPos;
          mplayer = OO.Player.create('ooyalaplayer', embedcode);
          mplayer.mb.subscribe(OO.EVENTS.PLAYBACK_READY, 'example', function(eventName) {
            title = mplayer.getCurrentItemTitle();
            var vData = mplayer.getItem();
            dur = parseInt(vData.time);
          });
          mplayer.mb.subscribe(OO.EVENTS.PLAYHEAD_TIME_CHANGED, 'example', function(eventName) {
            phPos = parseInt(mplayer.getPlayheadTime());
            if ((phPos == parseInt(dur * 0.25)) && phPos != lastTriggerPos) {
              lastTriggerPos = phPos;
              alert('25%');
            }
            if ((phPos == parseInt(dur * 0.50)) && phPos != lastTriggerPos) {
              lastTriggerPos = phPos;
              alert('50%');
            }
            if ((phPos == parseInt(dur * 0.75)) && phPos != lastTriggerPos) {
              lastTriggerPos = phPos;
              alert('75%');
            }
            if ((phPos == parseInt(dur * 1)) && phPos != lastTriggerPos) {
              lastTriggerPos = phPos;
              alert('100%');
            }
          });
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多