1

私は Ooyala Player JS API を詳しく調べて、現在再生中のビデオがその長さの 75% に達したときにトリガーされるイベントを探しました。

Ooyala は、特定の動画の 0%、25%、50%、75%、100% の再生回数を調べる方法を提供していますが、自分のやりたいことを実行する方法が見つかりませんでした。

http://support.ooyala.com/developers/documentation/concepts/book_api_player.htmlですべてを確認しました

誰もこれを経験したことがありますか?役立つ可能性のある別の情報源を知っていますか?

前もって感謝します。

4

3 に答える 3

4
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 秒に達したときにアラートが鳴るように設定しています。

于 2013-01-02T22:43:02.243 に答える
2

以前の回答で提供されたコードは役に立ちましたが、いくつかの変更が必要でした。でラップする必要がOO.readyあり、25%、50%、75%、100% の完了時にコードが正確に 4 回呼び出されるように変更します。

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%');
    }
  });
});
于 2015-09-11T08:26:01.510 に答える
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%') 
    }
}
于 2014-05-21T06:27:15.630 に答える