2012-07-09 227 views

回答

1

在YouTube pluginApi的setSrc方法不存在或不正确:https://github.com/johndyer/mediaelement/issues/381

你要么必须直接调用loadVideoByUrl()或loadVideoById()从pluginApi内:

var myVideoPlayer = new MediaElementPlayer('#elementId'); 
myVideoPlayer.media.pluginApi.loadVideoById('myYoutubeId'); 

或者创建一个插件,将延长“媒体”指标,并添加setSrc()来调用这些方法之一:

/* global mejs */ 

(function($) { 
    $.extend(MediaElementPlayer.prototype, { 
     buildmyyoutube: function(player, controls, layers, media) { 
      if (!player.isVideo || media.pluginType !== 'youtube') { 
       return; 
      } 

      $.extend(media, { 
       /** 
       * mejs' youtube plugin's setSrc doesn't support youtube urls (the flash one does) 
       * 
       * @param string urlOrId Can either be a youtube url http://www.youtube.com/watch?v=<YoutubeId> 
       *      or directly a youtube id 
       */ 
       setSrc: function (urlOrId) { 
        var queryStr = urlOrId.match(/v=([^&]*)/); 
        var id = urlOrId; 

        if(queryStr !== null) { 
         id = queryStr[1]; 
        } 
        this.pluginApi.loadVideoById(id); 
       } 
      }); 
     } 
    }); 
})(mejs.$); 

var myVideoPlayer = new MediaElementPlayer('#elementId', {features: ['myyoutube']}); 
myVideoPlayer.setSrc('myYoutubeId'); 
myVideoPlayer.setSrc('http://www.youtube.com/watch?v=myYoutubeId'); 

我没有测试它原样,我不得不从我使用的一些代码编辑它,但它应该工作。