Jörg Reinholz: HTML5 Audio Externe Media Source load problem

Beitrag lesen

Meine Frage:
Ist es möglich, nach der Feststellung das das File das falsche Format hat nochmals einen Lade-versuch zu starten?

Es ist besser den Fehler auszumerzen als einen Wrapper um den Fehler zu bauen. Wenn Deine Datenquelle ab und zu statt die .ogg-Datei auszuliefern dem Browser zur Abruf einer anderen Ressource rät (HTTP/1.1 302 FOUND), dann solltest Du auch erfahren können, woran das liegt.

Vielleicht will ja der Betreiber von kiwi6.com nicht, dass "seine" Ressourcen von in fremden Webseiten eingebunden Playern aus abgerufen werden? Wenn der das nicht will, so wird es zu einem Wettlauf zwischen Dir und ihm kommen, und zwar wird er immer nach Wegen suchen, das zu verhindern

Bei einem Abruf Deiner Quelle
* http://k006.kiwi6.com/hotlink/x44474570q/op01.ogg

wird scheinbar stets zu einem anderen Server umgeleitet:

HTTP/1.1 302 Found
Location: http://k002.kiwi6.com/hotlink/x44474570q/op01.ogg

Scheinbar wird diese Umleitung vom Browser nicht korrekt verarbeitet.

Ich verstehe das mal so, dass der Betreiber eine Art Lastausgleich versucht, in dem er die Ressourcen auf verschiedene Quellen verteilt wobei aber jede weiß, wo die Datei ist.

Krücke:

Gib die richtige URL an und schaue täglich nach, ob der Betreiber von kiwi6.com diese nicht verschoben hat.

Es kann aber auch sein und ist sogar wahrscheinlich dass der Betreiber in Abhängigkeit vom scheinbaren Standort des Abrufes (also des Abrufers Deiner Webseite) zu einem Server auf dem scheinbar richtigen Kontinent umleitet - oder was weiß ich denn was der Betreiber sich ausdachte.

Krücke Javascript mit onerror:

<audio controls preload="auto" autobuffer title="FooBar" onerror="Deine_Javascript_Funktion(this)>
<source src="URL zu ogg aus XML"type="audio/ogg">
<source src="URL zu mp3 aus XML"type="audio/mp3">
</audio>

Im Übrigen fehlt Dir ein Leerzeichen zwischen der URL und dem Mime-Type:

besser: <source src="..." type="audio/ogg">

Aber auch für die Source lässt sich ein error-handler verwenden:

<source src="URL zu ogg aus XML "type="audio/ogg" onerror="Deine_Javascript_Funktion(this.parentNode)">

Mit dem onerror lässt sich Einiges anfangen. Hinweise liefert http://my.opera.com/core/blog/2010/03/03/everything-you-need-to-know-about-html5-video-and-audio-2

Suche in der Seite nach: video.onerror = function(e), da findest Du Vorschläge. Wobei ich mir nicht sicher bin, ob das neu laden (Raus aus dem DOM, rein aus dem DOM) des Kindelementes "source" ausreicht.

Was für den video-tag gilt gilt weitgehend auch für den audio-tag.

Jörg Reinholz