- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如图所示: How do I get mediaelement.js player state (paused, volume, etc.)?
您可以通过简单地向实例添加“媒体”来访问 MediaElement 属性,然后您可以获得此处描述的 api:http://mediaelementjs.com/#api .
但是我如何才能使“媒体”变得不再是必需的,使 MediaElement api 与 html5 视频的完全(几乎)相同?
最佳答案
您可以访问 API methods
(作为 HTML5 视频)但不是 properties
或 events
,它仍然需要引用底层的 media 元素,并且就在 MEJS 成功加载之后。
注意 setter properties
可以引用底层 media 元素(在 success
设置内)或 MEJS 播放器访问。
所以,为了说明:
var myPlayer = new MediaElementPlayer('.player_1', {
success: function (mediaElement) {
// properties need to refer the MEJS underlaying element
console.log(mediaElement.paused); // return true
console.log(mediaElement.muted); // returns false
// same for events
mediaElement.addEventListener('playing', function () {
console.log("event triggered after play method");
}, false);
mediaElement.addEventListener('pause', function () {
// set time at 90 seconds and unmute if player is paused
// but wait 3 seconds before doing that
// notice the previous time set (145 seconds)
setTimeout(function () {
// setters can refer MEJS underlaying element
mediaElement.setCurrentTime(90);
mediaElement.setMuted(false);
}, 3000);
}, false);
}
});
// methods can refer the MEJS player
myPlayer.play();
// but not properties
console.log("paused? " + myPlayer.paused); // returns undefined
console.log("muted? " + myPlayer.muted); // returns undefined
// pauses, set time and mute after 5 seconds of playing
setTimeout(function () {
myPlayer.pause(); // method
// setters can also refer the MEJS player
myPlayer.setCurrentTime(145);
myPlayer.setMuted(true);
}, 5000);
参见 JSFIDDLE
编辑
OP 评论:
... could I somehow have all those elements and properties refer up by one 'element'
很有趣。查看我编写的另一个代码,我认为可以声明,我们称它为 universal element
,您可以对其应用任何 method
, property
或 event
,从您代码中的任何位置。
您唯一需要做的就是声明您的 one
元素作为全局元素:
var uElement; // the universal element
然后用 success
设置值设置覆盖底层 media 元素,如:
success: function (mediaElement) {
uElement = mediaElement;
....
}
从那里,您现在可以应用任何 method
, property
或 event
到那个单例 uElement
仅限对象。所以使用前面的例子:
var uElement; // the universal element
var myPlayer = new MediaElementPlayer('.player_1', {
success: function (mediaElement) {
// set the universal element
uElement = mediaElement;
// properties for universal element
console.log(uElement.paused); // OK return true
console.log(uElement.muted); // OK returns false
// set events for universal element
uElement.addEventListener('playing', function () {
console.log("event triggered after play method");
}, false);
uElement.addEventListener('pause', function () {
// set time at 90 seconds and unmute if player is paused
// but wait 3 seconds before doing that
// notice the previous time set (145 seconds)
setTimeout(function () {
// setters for universal element
uElement.setCurrentTime(90); // OK
uElement.setMuted(false); // OK
}, 3000);
}, false);
}
});
// method for universal element
uElement.play(); // OK
// properties for universal element
console.log("paused? " + uElement.paused); // OK returns false
console.log("muted? " + uElement.muted); // OK returns false
// pauses, set time and mute after 5 seconds of playing
setTimeout(function () {
uElement.pause(); // OK method for universal element
// setters for universal element
uElement.setCurrentTime(145); // OK
uElement.setMuted(true); // OK
}, 5000);
参见 fork JSFIDDLE
重要
在上面的例子中我们使用了audio
, 然而 videos
是其他类型的动物。
首先,您需要记住,您可能无法引用 uElement
对象,除非视频已完全加载并且可以播放。将方法(如 .play()
)应用于 uElement
在视频准备好之前可能会出现 js 错误和故障。
例如,在我们前面的例子中,如果我们调用 uElement.play()
MEJS初始化后的方法(视频),它会触发js错误uElement
是 undefined
。这是因为该方法是在 uElement
之前调用的。 success
里面的初始化环境。
如果我们想自动播放视频(uElement.play()
)刚加载完(或者实际上调用应用于uElement
的任何其他方法),我们需要做两件事解决上述情况:
添加 event
监听器(在 success
设置内)在视频准备好播放时通知我们:
uElement.addEventListener('canplay', function () {
_canPlay = true;
}, false);
如果视频准备好播放,那么我们设置true
到我们的标志(之前初始化为 false
)
验证 _canPlay
setInterval()
内的标志功能直到 true
, 然后播放
var readyToPlay = setInterval(function () {
console.log("not ready yet");
if ( _canPlay ) {
console.log("Now it's ready, so play");
uElement.play();
clearInterval(readyToPlay);
};
}, 100);
此解决方法可用于 youtube 视频以及自托管 (mp4) 视频。
查看最后一个 JSFIDDLE
最后注意:如果您有多个视频并且想要应用不同的 methods
, properties
或 events
对于它们中的每一个,那么你必须单独初始化它们并创建一个不同的 uElement
对于他们每个人
关于html - 使 MediaElement 与 HTML5 视频相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146812/
我将 mediaelement.js 用于可用空间有限的音频播放器。我需要为控件包含自定义样式,并完成大部分 CSS。我遇到麻烦的地方是 mediaelement.js 脚本将 CSS 宽度应用于某些
我在尝试将 2 个音频播放器添加到一个页面时遇到问题 http://www.brad-holmes.co.uk/sites/jameswilliams/index.html 第一个加载正常但第二个根本
我希望在视频播放完毕后显示海报和播放图标。 有没有人试图实现这一目标? 最佳答案 是的,我自己尝试了一个项目,客户希望视频完成后海报图像回来。这是我的代码: jQuery("video").m
我想在播放 MediaElement 视频时触发全屏。 $('video').on("play", function () { //fullscreen mode }); 有任何想法吗?谢谢
我有一个绝对定位的 div,我希望 MediaElement.js 用视频填充它。当用户调整窗口大小时,div 的大小会发生变化,我希望视频也随之改变大小。 我试过 this guy's method
这是github位置: https://github.com/johndyer/mediaelement 和他们的网站: http://mediaelementjs.com/ 我想部署它,但我不知道许
我试图让音频播放器显示运行 mediaelement.js WP 插件的多个轨道。我试图在短代码中使用逗号分隔的列表,但这是行不通的。我需要在代码中的某处更改某些内容吗? 最佳答案 我认为目前不可能。
我试图在 mediaelement.js 中搜索音频播放列表的示例。但我没有发现,mediaelement.js 支持音频播放列表吗?如果是这样,请支持我提供示例代码或链接。非常感谢。 最佳答案 我设
如何在 mediaelement.js 中播放 .FLV 视频? 这是一个内部应用程序,我只需要使用 Google Chrome 和 mediaelement.js 播放 MP4 和 FLV 视频 最
根据 mediaelement.js website 上的说明应该很容易获得玩家状态。但我不知道该怎么做。 我正在创建这样的播放器并尝试读取属性(播放器本身工作没有问题)。 var player =
可能吗? 我知道这是完全不同的事情,但是使用 jw 媒体播放器,您可以选择拉伸(stretch)视频以填充 div。难道只是 html5 对这些事情不屑一顾吗? 谢谢 最佳答案 尝试设置以下内容
是否可以从 mediaelement.js 中删除或隐藏大播放按钮?的视频播放器代码? 最佳答案 您可以更新网站的 CSS 以包含.mejs-overlay-button {display:none;
我有一个使用 MediaElement 插件的页面。在 chrome 上一切正常,但是在 IE8 中,音频元素上的 player.play() 方法似乎存在问题。 以 2.3.0 版下载中的演示“me
我对 WPF 中的多个 MediaElement 有疑问。我只想一次又一次地同时播放一个 MediaElement,直到 audioindex 发生变化。声源只是一个简短的词,所以我会重复/循环它。但
每次播放器进入全屏(或从全屏退出)时我都需要检查,换句话说,我需要在触发全屏方法时监听自定义事件,以便我可以在下面做其他事情。 最佳答案 在初始化 MediaElement 之前,您需要添加以下代码:
我正在使用 WPF MediaElement 播放视频。当 MediaElement 暂停时,我将位置设置为视频中的另一个点。我希望 MediaElement 中的视频图像刷新以反射(reflect)
我正在尝试将多个视频放在一个页面上,但是当我单击一个播放时,它们都播放了?有没有其他人经历过这种情况? 这是我使用的代码片段 $("video,audio").mediaelementplayer({
由 Kroc @ Video for Everyone 推荐。我希望能够在第一个视频结束后自动播放第二个视频,然后在第二个视频结束后显示静态图像。一段时间后,循环回到第一个视频。 谢谢 最佳答案 $(
我希望在网站页面加载时自动播放视频。 我在我的页面上引用了 jquery.js、mediaelementplayer.js 和 mediaelementplayar.min.css 并添加了视频标签。
我有这样的代码(例如): $('audio').mediaelementplayer(); /media/file-1.mp3 /media/file-2.mp3
我是一名优秀的程序员,十分优秀!