Mamy zestaw bloków HTML - powiedzmy około 50 z nich - które są iteracyjnie analizowany i mieć Audio
obiekty dynamicznie Dodano:IE 9 i 10 wydajność nieoczekiwane i niezgodne MediaError na
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();
}
}
}
Załóżmy, że generują około 40 do 80 z nich przy ładowaniu strony, ale zawsze ten sam zestaw dla konkretnej konfiguracji. We wszystkich testowanych przeglądarkach ta podstawowa strategia wydaje się działać. Ładowanie audio i odtwarzanie powiodło się.
W 9 i 10 IE pojawia się błąd przejściowy. Czasami wywołanie obiektu .play()
na wewnętrznym obiekcie kończy się niepowodzeniem. Po oględzinach, wewnętrzny obiekt ma postać .error.code
z .error.code
z .error.code
. Plik .duration
pokazuje NaN
.
Jednak zdarza się to tylko sporadycznie i dla niektórych losowych podzbiorów plików audio. Np., zwyklefile_abc.mp3
odtwarza, ale czasami generuje błąd. Monitor sieci pokazuje udane pobieranie w obu przypadkach. I próbuje przeładować plik poprzez konsola również nie - i żadne prośby pojawia się w monitorze sieci IE:
var a = new Audio();
a.src = "the_broken_file.mp3";
a.play(); // fails
a.error.code; // 4
Nawet dodanie wartości kwerenda nie powiedzie się odśwież plik audio lub wywołać jakiekolwiek żądania sieciowe:
var a = new Audio();
a.src = "the_broken_file.mp3?v=12345";
a.play(); // fails
a.error.code; // 4
Jednak próba załadowania uszkodzonego pliku audio w nowej karcie przy użyciu tego samego kodu działa: "nieobsługiwany src" jest odtwarzany idealnie.
Czy są jakieś limity zasobów, które moglibyśmy uderzyć? (Być może "nieobsługiwane" audio kończy pobieranie późno?) Czy są jakieś znane błędy? Obejścia?
Myślę, że możemy dość łatwo wykryć, kiedy plik się nie powiedzie. Z innych powodów kompatybilności uruchamiamy pętlę, aby sprawdzić postępy i statystyki postępu audio, aby zapobiec postępowi w aplikacji (ocena), dopóki dźwięk nie zostanie zakończony. Możemy łatwo szukać wartości .error
- ale jeśli znajdziemy, co z tym zrobimy !?
Uzupełnienie: Właśnie znalazłem powiązane pytanie (IE 9/10/11 sound file limit), który sugeruje, że jest nieudokumentowana limit 41 - nie wiem, czy to jest limit „41 wniosków dotyczących plików audio”, „41 obiektów audio w pamięci” lub co. Muszę jeszcze znaleźć jakąkolwiek dokumentację M $ w tej sprawie - lub znane rozwiązania.
Chris ma rację, to prawdopodobnie powoduje problem. Innym rozwiązaniem jest użycie [ikonki audio] (http://blog.createjs.com/audio-sprite-support-in-soundjs/), które zostały dodane do NEXT wersji [SoundJS dostępnej na githubie] (https://github.com/CreateJS/SoundJS/). Nadzieję, że pomaga. – OJay