自动播放MediaElementPlayer

时间:2011-03-22 16:01:16

标签: mediaelement.js

我想在加载网站页面时自动播放视频。

我在我的网页上引用了jquery.js,mediaelementplayer.js和mediaelementplayar.min.css,并添加了视频标记。

我尝试了很多方法,例如autoplay = true并使用javascript代码,但我无法让它工作。

我正在使用BlogEngine.Net 2.0。

我该怎么做?

12 个答案:

答案 0 :(得分:22)

这是MediaElementJS中的一个错误,自动播放适用于本机和Silverlight,但需要一些Flash帮助。

您可以收听 canPlay 事件,并在Flash播放器准备就绪后立即开始播放。

setTimeout技巧可能会在竞争条件下失败。

$('#playerid').mediaelementplayer({
    plugins: ['flash', 'silverlight'],
    success: function(mediaElement, domObject) {
        if (mediaElement.pluginType == 'flash') {
            mediaElement.addEventListener('canplay', function() {
                // Player is ready
                mediaElement.play();
            }, false);
        }
    },
    error: function() {
        alert('Error setting media!');
    }
});

答案 1 :(得分:8)

您可以将autoplay="true"属性添加到<video>标记,如下所示:

<video width="100%" height="auto" poster="some_image.jpg" controls="controls" 
    autoplay="true">

  <source type="video/mp4" src="myvideo.mp4" />
  <source type="video/webm" src="myvideo.webm" />
  <source type="video/ogg" src="myvideo.ogv" />
  <object width="320" height="240" type="application/x-shockwave-flash" data="flashmediaelement.swf">
    <param name="movie" value="flashmediaelement.swf" />
    <param name="flashvars" value="controls=true&file=myvideo.mp4" />
    <img src="myvideo.jpg" width="320" height="240" title="No video playback capabilities" />
  </object>
</video>

要在所有浏览器/设备上播放,您可以使用jQuery引用该对象并调用其play()方法。

<script>  
     var player = new MediaElementPlayer('#id-of-player',/* Options */);
     player.play(); 
</script>

有关详细信息,请查看here

答案 2 :(得分:5)

这可能会有所帮助。

$('audio,video').mediaelementplayer({
        success: function(player, node) {
        $('.mejs-overlay-button').trigger('click');
        }
});

答案 3 :(得分:3)

// works here (tested with MediaElements.js 2.1.9)
$(document).ready(function () {
  $('video,audio').mediaelementplayer().load();
});

答案 4 :(得分:3)

除非我错过了这一点,否则只需将'autoplay'添加到HTML5视频标记

即可

答案 5 :(得分:2)

var player = new MediaElementPlayer('video', {
    startVolume: 0.8,
    features: ['playpause','progress'],
    autoplay: true,
    audioWidth: 250,
    audioHeight: 40
    }
);


player.play();

只需创建自己的对象并通过play()启动它;

答案 6 :(得分:2)

尽管user932056的建议对我来说并不完全有用,但我在页面顶部使用了最终有效的概念:

<script type="text/javascript">
$(document).ready(function() {
   $("div.mejs-container .mejs-button").trigger('click');
});
</script>

答案 7 :(得分:2)

以下是我在HTML5视频案例和Flash播放器中为我编写和编写的代码;

$('video,audio').mediaelementplayer({
   mode: 'auto_plugin',
   defaultVideoWidth: 480, 
   defaultVideoHeight: 360,
   success: function (me) {
      whenPlayerReadyToPlay(me, function () {
         me.play();
      })
   }
});

function whenVideoReadyToPlay(me, callback) {
   if (me.pluginType !== 'flash') {
      me.addEventListener('loadstart', function (e) {
         callback();
      }, false);

      return;
   }

   if (me.attributes.preload === 'none') {
      $(me.pluginElement).ready(function (e) {
         callback();
      });
   }
   else {
      me.addEventListener('canplay', function (e) {
         callback();
      }, false);
   }
}

答案 8 :(得分:1)

这是代码:

$(document).ready(function () {

        $('video,audio').mediaelementplayer({ defaultVideoWidth: 480, defaultVideoHeight: 360 });

        setTimeout('eventClickTrigger()', 1000);
    });

    function eventClickTrigger() {

        $('.mep-overlay').trigger('click');
    }
简单,但花了我一个星期

答案 9 :(得分:1)

或者您可以将自动播放和/或preload="auto"放到上面jQuery引用的<video>标记中。

答案 10 :(得分:1)

这是我所知道的最简单的方法。 我不确定这是否是您正在寻找的,但如果我对您的问题的理解是正确的,这对我有用。我正在使用MediaElement 2.9.4。

<script>
    MediaElement('player1', {success: function(me) {    
    me.play();
    }});
</script>

答案 11 :(得分:0)

对于那些在safari iOS(或其他拒绝自动播放的浏览器)上autoplay有问题的人,有一项新政策要求用户采取措施播放媒体(音频,视频),任何解决方案上面提到的将不起作用。 在这里https://webkit.org/blog/6784/new-video-policies-for-ios/有更多详细信息。

最好的解决方法是使用success回调来检测视频是否未播放,然后在按钮上附加一个操作以播放视频

var video = document.querySelector('video');
var promise = $j('.video-wrap .video').mediaelementplayer({
        autoplay: true,
        playsinline: 1,
        success: function(media, node, player) {
          if(media.paused){
                $( "body" ).append( "<button type="button" id='playvideo'>Play</button>" );
          }
        },
        error: function (e) {
        }
});
//add a click action to play video  
$( "#playvideo" ).click(function() {
        video.play()
});