我有一个载有视频的MediaElement.js播放器,我有一个(数据库驱动的)函数,给定该视频中的时间偏移量,给出了实际的实际时间。视频的一部分代表。
即如果视频包含2个30秒的剪辑,其中第一个是周二早上录制的,第二个是周四晚上录制的,我所获得的功能将输入25.2并返回星期二早上的特定时间,或者它将在周四晚上输入44.6并返回时间。等等。
我的问题是:我是否可以截取用于显示时间的MediaElement位(例如,当您将鼠标悬停在时间轨上时显示时间偏移的浮动div,等等),以及让他们使用我的功能来确定要显示什么?理想情况下,如果可能的话,我想在不修改MEJS代码本身的情况下这样做。
谢谢!
答案 0 :(得分:4)
+1好问题,是的 - 这是可能的。你想要做的是为进度和当前时间等创建自己的插件/功能。
以下是一个简单的示例,说明如何为当前时间创建插件/功能,这应该可以帮助您入门,确保在功能名称前加上“build”:
(function($) {
MediaElementPlayer.prototype.buildmyfeature = function(player, controls, layers, media) {
var t = this;
$('<div class="mejs-time">'+
'<span class="mejs-currenttime">' + (player.options.alwaysShowHours ? '00:' : '')
+ (player.options.showTimecodeFrameCount? '00:00:00':'00:00')+ '</span>'+
'</div>')
// append it to the toolbar
.appendTo(controls);
//attach element we want to update to t (this) for easier access
t.currenttime = t.controls.find('.mejs-currenttime');
// add a timeupdate event
media.addEventListener('timeupdate',function() {
if(t.currenttime) {
//replace with whatever time you want to insert here
t.currenttime.html(mejs.Utility.secondsToTimeCode(t.media.currentTime, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount, t.options.framesPerSecond || 25));
}
}, false);
}
})(jQuery);
并将您的插件/功能添加到功能:param,如下所示:
$('audio,video').mediaelementplayer({
features: ['playpause','myfeature','progress']
});
有一个例子如何从官方mediaelementjs网站创建一个循环按钮(插件/功能): http://mediaelementjs.com/examples/?name=loop
如果您需要一些代码来开始使用进度条,请在git上查看mep-feature-progress.js。