Wir haben eine Reihe von HTML-Blöcke haben - sagen wir etwa 50 von ihnen - die iterativ analysiert werden und haben Audio
Objekte dynamisch hinzugefügt:IE 9 und 10 Ausbeute unerwartet und inkonsistent MediaError des
var SomeAudioWrapper = function(name) {
this.internal_player = new Audio();
this.internal_player.src = this.determineSrcFromName(name);
// ultimately an MP3
this.play = function() {
if (someOtherConditionsAreMet()) {
this.internal_player.play();
}
}
}
Angenommen, wir erzeugen über 40 bis 80 davon beim Seitenladen, aber immer gleich für eine bestimmte Konfiguration eingestellt. In allen getesteten Browsern scheint diese grundlegende Strategie zu funktionieren. Das Audio lädt und spielt erfolgreich.
In IE 9 und 10, ein transient Bug Oberflächen. Gelegentlich schlägt der Aufruf .play()
auf dem inneren Audio
Objekt fehl. Bei der Inspektion hat das innere Audio
Objekt eine .error.code
von 4
(MEDIA_ERR_SRC_NOT_SUPPORTED). Die Datei .duration
zeigt NaN
.
Dies geschieht jedoch nur gelegentlich und zu einer zufälligen Teilmenge der Audiodateien. ZB normalerweisefile_abc.mp3
spielt, aber manchmal erzeugt es den Fehler. Der Netzwerkmonitor zeigt in beiden Fällen einen erfolgreichen Download an. Und versucht, die Datei erneut zu laden über die Konsole auch nicht - und keine Anforderungen erscheint im IE-Netzwerkmonitor:
var a = new Audio();
a.src = "the_broken_file.mp3";
a.play(); // fails
a.error.code; // 4
Auch eine Abfrage Wert Anhängen nicht die Audio erneut abzurufen oder alle Netzwerkanfragen auslösen:
var a = new Audio();
a.src = "the_broken_file.mp3?v=12345";
a.play(); // fails
a.error.code; // 4
Versuchen Sie jedoch, die defekte Audiodatei in einer neuen Registerkarte mit dem gleichen Code laden funktioniert: die "nicht unterstützte src" spielt perfekt.
Gibt es Ressourcenbeschränkungen, die wir treffen könnten? (Vielleicht endet der "nicht unterstützte" Ton mit dem Download zu spät?) Gibt es bekannte Fehler? Problemumgehungen?
Ich denke, wir können ziemlich leicht erkennen, wenn eine Datei fehlschlägt. Aus anderen Kompatibilitätsgründen führen wir eine Schleife aus, um den Audiofortschritt und die Abschlussstatistiken zu überprüfen, um eine Progression durch die App (eine Bewertung) zu verhindern, bis der Ton vollständig ist. Wir könnten leicht nach .error
Werten suchen - aber wenn wir eins finden, was machen wir dann?
Nachtrag: Ich habe gerade eine ähnliche Frage (IE 9/10/11 sound file limit), dass es ein nicht dokumentierte Limit von 41 schon sagt - nicht sicher, ob die „41 In-Memory-Audio-Objekte“ eine Grenze von „für Audio-Dateien 41 Anfragen“ ist oder was. Ich habe noch keine M $ -Dokumentation zu diesem Thema gefunden - oder bekannte Lösungen.
Chris hat Recht, das ist wahrscheinlich, was Ihr Problem verursacht. Eine andere Lösung ist die Verwendung von [audio sprites] (http://blog.createjs.com/audio-sprite-support-in-soundjs/), die zur NEXT-Version von [SoundJS auf github] hinzugefügt wurden (https://github.com/CreateJS/SoundJS/). Hoffe, dass hilft. – OJay