【问题标题】:Ooyala Player Event - Notification when player reaches a certain point of the videoOoyala 播放器事件 - 当播放器到达视频的某个点时发出通知
【发布时间】:2012-07-03 03:50:26
【问题描述】:
【问题讨论】:
标签:
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%');
}
});
});