今天用JWplayer播放视频,要求左右两视频对比,
由于左右视频时间不同步,所以要求右面视频开始播放时间要跳转N秒
以前做过类似的东西,以为很简单,只要用时间跳转就可以了
player2.sendEvent('seek', N秒) ;
出乎自己的意料,没有成功,开始怀疑方法是不是写错了
再刷新再试了十多次之后,发现加入断点之后能成功,去掉断点就不行
在网上打了N多资料之后,决定从状态入手;
if (obj["newstate"] == "PLAYING") {
player2.sendEvent('seek', '${vc.initFileName}');;
}
结论:只有在其播放的状态下,调用Seek才生效;
原文代码如下:
Ext.onReady(function() {
var filepath = '${vedioUrl}';
// 创建播放器对象
var player = new SWFObject('./lib/player/player.swf', 'jw', '470', '425', '9', '#ffffff');
player.addParam('allowfullscreen', 'true');
player.addParam('allowscriptaccess', 'always');
player.addParam('wmode', 'opaque');
player.addParam('flashvars', 'file=${vc.videoUrl}&bufferlength=10&stretching=uniform&autostart=true&skin=./lib/player/skin/kleur.swf');
player.write('player');
loadKeyframe('${fileId}');
var player2 = new SWFObject('./lib/player/player.swf', 'jw2', '470', '425', '9', '#ffffff');
player2.addParam('allowfullscreen', 'true');
player2.addParam('allowscriptaccess', 'always');
player2.addParam('wmode', 'opaque');
player2.addParam('flashvars', 'file='+filepath);
player2.write('player2');
});
var player2 ;
function playerReady(obj){
if(obj.id=='jw2'){
player2 = document.getElementById(obj['id']);
player2.sendEvent('play',true);
player2.sendEvent('volume',3);
player2.addModelListener("STATE", "stateTracker");
}
}
//状态监控回调函数
function stateTracker(obj) {
/**if (obj["newstate"] == "PAUSED") {
alert(1111);
}
if (obj["newstate"] == "COMPLETED") {
alert(222);
} */
if (obj["newstate"] == "PLAYING") {
player2.sendEvent('seek', '${vc.initFileName}');;
}
}