2010-11-17 13 views
5

[EDIT: en utilisant une page de test simplifié sans Javascript, etc.]fichiers HTML5 audio ne parviennent pas à charger dans Safari

J'ai une page Web contenant quatre fichiers audio. Ces fichiers sont signifiés en HTML5 <audio> avec des fichiers .mp3, qui devraient être lus dans Safari. (Je n'ai eu aucun problème avec les fichiers .ogg dans Firefox et Chrome.)

Chaque fois que je recharge la page, entre un et trois des fichiers se chargent correctement, et le reste ne se charge pas - bien qu'ils ne portent pas t donner une erreur, et le message 'chargement' disparaît; c'est comme s'ils chargeaient avec une taille de 0B. Quels sont les fichiers qui fonctionnent et qui ne semblent pas complètement aléatoires: j'ai vu chacun d'entre eux charger et chacun d'eux échoue plus d'une fois.

Comment charger tous ces fichiers correctement?

+1

Je vais avoir cette même question exacte; Je suis complètement déconcerté par cela. –

+0

Avez-vous pu résoudre ce problème? Je suis confronté exactement au même problème. Même si je recharge l'audio sur un événement bloqué, il continue à décrocher sans arrêt, encore et encore. Il ne paiera jamais plus d'une seconde. – Kolyunya

+0

Il peut être utile de savoir que Safari semble avoir besoin d'extensions de fichiers pour les demandes de support. Le type mime correct (dans l'élément audio et dans la réponse) ne suffit pas à charger la ressource. – pwray

Répondre

8

J'avais un problème similaire avec les fichiers ne se charge pas et est venu avec cette solution. Il semble que HTML5 audio/vidéo peut "stagner", ce qui signifie que le chargement s'arrête. Heureusement, il y a un événement «décrochage» qui se déclenche lorsque cela se produit. Ce que j'ai fait était d'écouter cet événement et quand/si il se déclenche, essayez simplement de forcer le chargement de l'audio à nouveau.

Exemple avec 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

Dans ce contexte '$ (this) [0]' est équivalent à 'this' – incarnate

+0

Une idée si cela fonctionne aussi pour soundmanager2? –

0

Vous cherchez à la source générée de votre page vous chargez comme première source d'un fichier ogg puis un fichier mp3 dans cet ordre exact

Mais, comme spécifié dans le fichier http://html5doctor.com/native-audio-in-the-browser/ sont dans l'ordre inverse, alors essayez de faire la même chose

sinon essayez de servir dans vos sources aussi un audio aac dans un conteneur m4a/mp4

+0

Merci pour la réponse. J'ai inversé l'ordre des types de fichiers, et cela ne fait pas de différence. Je vais essayer d'utiliser des fichiers m4a, mais je ne comprends vraiment pas pourquoi je devrais le faire, car Safari prend théoriquement en charge les fichiers mp3, et certains d'entre eux fonctionnent très bien. –