HTML5 Audio Externe Media Source load problem
Mazleu
- html
0 Siri0 Mazleu
0 Jörg Reinholz
Hi ich habe folgende Problem:
Ich schreibe gerade einen HTML5 Audio Player, was an sich auch kein Problem darstellt.
Nun habe ich aber als Audioquelle einen externen Hoster der Hotlinks anbietet.
Der Palyer:
http://www.detektiv-conan.ch/aplayer/player.php
Der Code:
<audio controls preload="auto" autobuffer title="<Titel aus XML">
<source src="URL zu ogg aus XML"type="audio/ogg">
<source src="URL zu mp3 aus XML"type="audio/mp3">
Dein Browser unterstützt den Player nicht.
</audio>
Mein Problem:
Die Hotlinks werden ab und zu zu einer HTML Website weiter verbunden.
Wenn man die Seite aber neu lädt geht es wieder
Meine Frage:
Ist es möglich, nach der Feststellung das das File das falsche Format hat nochmals einen Lade-versuch zu starten?
Ich bin noch ein relativer Neuling was das programmieren angeht, also entschuldigt mein Unwissen.
Wenn mir jemand helfen könnte wäre das nett.
Hallo,
<audio controls preload="auto" autobuffer title="<Titel aus XML">
<source src="URL zu ogg aus XML"type="audio/ogg">
<source src="URL zu mp3 aus XML"type="audio/mp3">
Dein Browser unterstützt den Player nicht.
</audio>
Vielleicht liegts auch an den fehlenden Leerzeichen?
<source src="URL zu ogg aus XML" type="audio/ogg">
<source src="URL zu mp3 aus XML" type="audio/mp3">
Viele Grüße
Siri
Das Lehrzeichen ist vorhanden, ich habs nur falsch rüberkopiert.
Das man fast immer weiterverbunden wird ist mühsam, aber nicht so tragisch.
Man wird immer eine Nummer weiter nach unten "verbunden" wenn ein Server überlastet ist.
Sehr seltsam finde ich, das alles sehr viel schneller geht, wenn man die Quelle direkt im Browser eingibt.
Heir der echte Code:
<audio controls preload="auto" autobuffer title="<?php echo trim($track_objekt -> titelenglisch);?>">
<?php
try{
echo '<source src="' . trim($track -> oggdatei) . '"type="audio/ogg">';
echo '<source src="' . trim($track -> mp3datei) . '"type="audio/mp3">';
}
?>
Dein Browser unterstützt den Player nicht.
</audio>
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.