2016-04-21 1 views
0

Я не могу найти свою ошибку здесь. Я подключаю дорожку soundcloud к audioNode, и это до biquadFilter, поэтому я могу применить к нему выравнивание. Все это внутри AngularJs AppmediaElement работает в Chrome, но не в Firefox или Edge (веб-аудио api/angularJS)

Он работает без каких-либо проблем в хроме, но в Firefox и MS Крае Я получаю эту ошибку:

Error: this.source.mediaElement is undefined 
    soundcloudObject.[email protected]://localhost:8080/app/app.module.js:535:13 

Вот соответствующая часть кода

app.factory("soundcloudObject", function(){ 
function soundcloudObject(url){ 
    if (typeof url === 'undefined') { 
     url= "http://api.soundcloud.com/tracks/119451720/stream"; 
     } 

    var clientId = "?client_id=MY_CLIENT_ID"; 
    var song = new Audio(); 
    song.crossOrigin = "anonymous"; 
    song.src = url + clientId; 

    this.source = scope.audioContext.createMediaElementSource(song);   
} 

var isPlaying = false; 
soundcloudObject.prototype.playPause = function(){   
    if (isPlaying === true){ 
     this.source.disconnect(); 
      isPlaying = false; 
      console.log("Music Is Not Playing"); 
    } 
    else{ 
     this.source.connect(scope.musicEq); 
this.source.mediaElement.play(); //##################//**LINE 535**// 
     isPlaying = true; 
    } 
}; 

soundcloudObject.prototype.play = function(){ 
    this.source.disconnect(); 
    this.source.connect(scope.musicEq); // connect to EQ Node 
    this.source.mediaElement.play(); 
    isPlaying = true; 
}; 



soundcloudObject.prototype.disconnect = function(){ 

    this.source.disconnect(); 
}; 

return soundcloudObject; 

}); 

Я создаю soundcloudObject со всеми данными в моем контроллере, а затем вызываю его на мой взгляд на .play() или .playPause(). объект (так называемый SoundCloud) существует, так как я могу видеть в моем журнале:

scope.soundcloud 
Object { source: MediaElementAudioSourceNode } 

soundcloud object

Но тогда я называю soundcloud.play() и я получаю TypeError: this.source.mediaElement is undefined

Я невежественный ...

ответ

0

Похоже, что .mediaElement устарели.

исправление было возвращено в цепочке узлов и использовать песню (источник самого медиа-элемента) song.play(), и она работала в firefox, chrome и edge.

Смежные вопросы