2010-11-17 5 views
5

[EDIT: mit einer vereinfachten Testseite ohne Javascript etc.] ladenHTML5 Audio-Dateien nicht in Safari

ich eine Webseite haben, die vier Audio-Dateien enthält. Diese Dateien werden als HTML5 <audio> mit MP3-Dateien geliefert, die in Safari abgespielt werden sollten. (Ich hatte keine Probleme mit .ogg-Dateien in Firefox und Chrome.)

Jedes Mal, wenn ich die Seite neu geladen, zwischen einem und drei der Dateien ordnungsgemäß geladen werden, und der Rest nicht geladen werden - obwohl sie nicht ' t einen Fehler geben, und die 'Lade' Nachricht verschwindet; es ist so, als würden sie mit einer Größe von 0B geladen. Welche Dateien funktionieren und welche nicht völlig zufällig erscheinen: Ich habe gesehen, wie jede von ihnen geladen wird und jeder von ihnen scheitert mehr als einmal.

Wie kann ich alle diese Dateien richtig laden?

+1

ich genau dieses gleiche Problem habe; Ich bin völlig verblüfft davon. –

+0

Konnten Sie das lösen? Ich habe genau dasselbe Problem. Selbst wenn ich das Audio bei einem blockierten Event neu lade, bleibt es immer wieder stehen. Es wird nie mehr als ein paar Sekunden kosten. – Kolyunya

+0

Es kann hilfreich sein zu wissen, dass Safari Dateierweiterungen für Medienanforderungen benötigt. Der richtige Mime-Typ (im Audio-Element und in der Antwort) reicht nicht aus, um die Ressource zu laden. – pwray

Antwort

8

ich habe ein ähnliches Problem mit Dateien nicht geladen und kamen mit dieser Lösung zu dienen. Es scheint, dass HTML5-Audio/Video "stehen" kann, was bedeutet, dass das Laden beendet wird. Glücklicherweise gibt es ein "Stall" -Event, das ausgelöst wird, wenn dies passiert. Was ich getan habe, war für dieses Ereignis zu hören und wenn/wenn es ausgelöst wird, versuchen Sie einfach, das Audio erneut zu laden.

Beispiel mit jQuery:

// the event is 'onstalled' - 'stalled' in the jquery case 
    $("audio").bind("stalled", function() { 
     var audio = this; 
     audio.load(); 

     // Threw in these two lines for good measure. 
     audio.play(); 
     audio.pause(); 
    }); 
+0

In diesem Zusammenhang ist '$ (this) [0]' äquivalent zu 'this' – incarnate

+0

Irgendeine Idee, wenn das auch für Soundmanager2 funktioniert? –

0

bei erzeugte Quelle Ihrer Seite Suchen Sie als erste Quelle laden eine ogg-Datei dann eine MP3-Datei in genau dieser Reihenfolge

Aber, wie in http://html5doctor.com/native-audio-in-the-browser/ Datei sind in umgekehrter Reihenfolge angegeben, so versuchen, das gleiche zu tun

sonst versuchen, in Ihren Quellen auch ein aac Audio in einem m4a/mp4 Containern

+0

Danke für die Antwort. Ich habe die Reihenfolge der Dateitypen umgekehrt und es macht keinen Unterschied. Ich werde versuchen, mit M4A-Dateien, aber es ist wirklich nicht klar, warum ich sollte, da Safari theoretisch MP3-Dateien unterstützt, und einige von ihnen funktionieren gut. –

Verwandte Themen