2014-10-03 69 views
0

我需要访问MediaElementPlayer对象的属性,我该怎么做?该网站提到您可以访问MediaElement对象的属性,如currentTimepaused,但不提及MediaElementPlayer。我想要做的一个例子:访问MediaElement.js播放器属性

var mejsplayer = new MediaElementPlayer($("#myplayer"), mejsOptions); 

setInterval(debug, 1000); 
function debug() { 
    console.log("Duration is " + mejsplayer.duration); 
    console.log("Current time is " + mejsplayer.currentTime); 
    console.log("Volume is " + mejsplayer.volume); 
    .... 
}; 

上面的代码报告说所有这些变量都是未定义的。

回答

0

工作后的很长一段时间与MEJS我终于找到了这个问题的答案。 MediaElementPlayer对象封装MediaElement对象,它可以这样访问:

var mejsplayer = new MediaElementPlayer($("#myplayer"), mejsOptions); 

setInterval(debug, 1000); 
function debug() { 
    console.log("Duration is " + mejsplayer.media.duration); 
    console.log("Current time is " + mejsplayer.media.currentTime); 
    console.log("Volume is " + mejsplayer.media.volume); 
    .... 
}; 
3

编辑

如果您要访问的播放器的性能,你应该得到的DOM对象。 MediaElement只是元素的某种扩展,所以它仍然使用DOM对象。所以,试试这个:

new MediaElementPlayer($("#myplayer"), /*mejsOptions*/); 
var player = document.getElementById('myplayer'); 
console.log(player.duration()); 

建议使用所提供的事件做,比如:

<video id="player1" width="320" height="240" poster="poster.jpg" controls="controls" preload="none"> 
    <!-- MP4 for Safari, IE9, iPhone, iPad, Android, and Windows Phone 7 --> 
    <source type="video/mp4" src="http://mediaelementjs.com/media/echo-hereweare.mp4" /> 
</video> 

player = new MediaElementPlayer('#player1',{ 
    success: function (mediaElement, domObject, player) { 
     mediaElement.addEventListener('timeupdate', function(e) { 
      console.log("Duration is " + mediaElement.duration); 
      console.log("Current time is " + mediaElement.currentTime); 
      console.log("Volume is " + mediaElement.volume); 
     }); 
    } 
}); 

你可以尝试here on jsfiddle

+0

0123对于原始答案,我无法像编辑答案那样访问DOM元素。另外,如果玩家使用Flash或Silverlight后备,我认为这不会起作用。很遗憾,您无法直接访问属性! – bdunn 2014-10-03 17:50:22

+0

没错,使用dom对象无法访问回退,只能获得HTML5真正的属性/方法 – ClemSndr 2014-10-05 20:54:30