【问题标题】:mediaElementjs: how to get instance of the playermediaElementjs:如何获取播放器的实例
【发布时间】:2012-10-22 15:40:48
【问题描述】:

我在使用 MediaElement.js 播放器时遇到了一点问题。

为了获取播放器的实例,我这样做(适用于兼容 html5 的浏览器):

    // Get player
this.playerId = $('div#shotlist-player video').attr('id');
this.player = window[this.playerId];

但是一旦在 Flash 中回退,它就无法正常工作。事实上,它不起作用,因为我没有调用 MediaElement 本身的实例。但我不知道怎么称呼它。

播放器是用

创建的
$('video').mediaelementplayer({....});

如何获取 mediaelement 对象?

------------编辑----

好的,我终于找到了如何让它工作:

    // Get player
mePlayer = $('div#shotlist-player video.video-js')[0];
this.player = new MediaElementPlayer(mePlayer);

现在我可以正确使用 mediaElement 实例了。

【问题讨论】:

  • 你可以用更好的方式获得播放器:this.player = $('div#shotlist-player video')[0]; - 实际上,我认为 window[id] 只在 IE 中有效(这是有史以来最愚蠢和最烦人的错误功能之一)
  • 感谢您的评论,但实际上,我仍然没有选择mediaelement实例,而是直接选择

标签: javascript jquery html html5-video mediaelement


【解决方案1】:

这篇文章有很多猜测,但可能是正确的。缺少文档 (;

sidonaldson 的回答是完全可以接受的,如果您希望创建一个新的 MediaElement 实例并获得它的句柄。如果已经存在一个,它似乎会尝试重新初始化该元素上的另一个实例并吓坏了。

我很确定 mediaelement.js 通过提供 JavaScript API 来通过这些元素操作 Flash/Silverlight 播放器,从而增强了内置的 HTML5 控件。我可能错了,但我在多个地方看到的关于这个问题的其他建议是:

$playButton.click(function() {
    $('video, audio').each(function() {
        $(this)[0].player.play();
    });
});

创建一个播放按钮作为外部 DOM 元素,它将触发页面上的所有播放器。这向我表明,实现与我所描述的类似。

【讨论】:

    【解决方案2】:

    试试:

    var player = $('video').mediaelementplayer({                
        success: function (me) {
             me.play();
        }
    });
    // then you can use player.id to return the id
    // or player.play();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      相关资源
      最近更新 更多