Я ответил на аналогичный вопрос на github .Вот мое решение:
Это происходит, когда метод setSrc вызывается слишком рано после инициализации проигрывателя mediaElement.Из-за аварийного восстановления флэш-памяти swf (и, следовательно, его методы API) не будут доступны, пока не произойдет событие успеха.После этого setSrc отлично работает в IE8 ..
Я не хотел устанавливать исходный источник из обработчика успеха.Поэтому я использовал логическое значение var, чтобы проверить, произошло ли событие успеха.В моем методе установки источника я проверяю его значение и использую рекурсивность (с setTimeout для предотвращения избыточного уничтожения) всякий раз, когда логическое значение переменной равно false.
//create the tag
var video = $("<video>",{id:"videoElement",width:640,height:360}).appendTo('body');//jquery
var mediaElementInitialized = true
//create the mediaelement
var mediaElement = new MediaElementPlayer("#videoElement",{
/**
* YOU MUST SET THE TYPE WHEN NO SRC IS PROVIDED AT INITIALISATION
* (This one is not very well documented.. If one leaves the type out, the success event will never fire!!)
**/
type: ["video/mp4"],
features: ['playpause','progress','current','duration','tracks','volume'],
//more options here..
success: function(mediaElement, domObject){
mediaElementInitialized = true;
},
error: function(e){alert(e);}
}
);
var setSource = function(src){
if(mediaElementInitialized == true){
if(mediaElement){
mediaElement.setSrc(src);
mediaElement.play();
}
} else {
//recursive.. ie8/flashplayer fallback fix..
var self = this;
setTimeout(function(){
self.setSource(src);
},100);
}
}