Marc Reichelt: Flash und die Sache mit den relativen URLs - zum Mitmachen :-)

Beitrag lesen

Hallo Richard,

Dir ist klar, dass es sich bei "TestURL.swf" um keine korrekte swf-Datei handelt? Was soll das einfache umbenennen bringen?

Welches Umbenennen?
Natürlich handelt es sich um eine korrekte SWF-Datei - sonst könnte ich sie ja nicht mit dem Flash Plugin einbinden.
Erstellt habe ich die Datei "TestURLs.swf" aus der Quelltext-Datei "TestURLs.as" mit dem Befehl
mtasc -strict -wimp -swf TestURLs.swf -main -header 30:30:31:cccccc TestURLs.as
(MTASC wird dafür benötigt).

Wenn ich in den von mir genutzten Browsern die Datei test.html aufrufe, wird die Datei "sound/sound.mp3" abgespielt.

Das ist richtig, das entspricht deiner Pfadangabe.

Natürlich. Dennoch:
Die Datei "test.html" bindet die Datei "TestURIs.swf" aus dem Unterordner "swf" ein - und TestURIs.swf lädt nicht ./swf/sound/sound.mp3, sondern ./sound/sound.mp3.
Es kommt also darauf an, wie die Datei "TestURIs.swf" eingebunden wird.

Rufe ich die SWF-Datei dagegen direkt auf, so wird "swf/sound/sound.mp3" abgespielt.

Bei mir öffnet sich im ie7 eine leere Seite und es wird kein sound gespielt. Dies ist ein vollkommen korrektes Verhalten des Browsers, weil es sich wie gesagt bei "TestURL.swf" um keine richtige swf-Datei handelt.

Falsch - "TestURLs.swf" ist eine völlig korrekte SWF-Datei. Erforsche deine Gefühle. ;-)
Warum die Datei bei direktem Aufruf in deinem IE 7 nicht aufgerufen wird, kannst allerdings nur du prüfen - eventuell liegt das am Eolas-Patent, oder du hast das Flash Plugin nicht installiert (was ich nicht glaube), oder Microsoft hat sich mal wieder was neues ausgedacht.

Im Firefox wird bei mir der externe Flash-Player aufgerufen, aber kein Sound abgespielt und im Player auch nicht aufgerufen. Richtig ist dies nicht, aber auf Grund der swf-Erweiterung verständlich. Vermutlich wird auf einem Rechner ohne installiertes Flash dann das Plugin des Browsers aktiv.

Dann wird das bei dir im Firefox wohl so eingestellt sein - bei mir im Firefox 2.0 (sowohl unter Linux als auch unter Windows) wird der Flashfilm im Browser angezeigt.
Und wenn der Film in einem externen Player aufgerufen wird, wird die Angabe "sound/sound.mp3" natürlich nur noch auf dem lokalen Dateisystem ausgeführt - und entsprechend wird keine MP3-Datei abgespielt, da keine gefunden wurde.

Der Header der Datei ist übrigens ebenfalls korrekt:
Date: Sun, 04 Feb 2007 00:54:09 GMT
Server: Apache/2.2.3
Last-Modified: Sat, 03 Feb 2007 18:54:53 GMT
Etag: "2c00f7-12a-feddd940"
Accept-Ranges: bytes
Content-Length: 298
Content-Type: application/x-shockwave-flash

200 OK

Das Problem scheint also bei dir zu liegen.

Im Opera wird tatsächlich das Flash-Plugin aktiviert und der Sound "swf/sound/sound.mp3" abgespielt. Dass auf diesen und nicht auf "sound/sound.mp3" zugegriffen wird, liegt daran, dass "TestURL.swf" im Verzeichnis "swf" liegt. Dass überhaupt ein Sound gespielt wird, halte ich allerdings für einen schlechten Witz dieses Browsers.

Es liegt nicht am Browser. Das gleiche Verhalten zeigen bei mir neben Opera 9.1 sowohl Konqueror, IE 6 und Firefox 2.0.

Als Erklärung: Das mit "TestURL.swf" solltest du ganz schnell vergessen, das ist kein korrektes Vorgehen. Richtig ist das mit der "test.html". Wenn du diese "test.html" unverändert in das Verzeichnis "/swf/" kopierst, wird der Sound "swf/sound/sound.mp3" abgespielt werden, weil dies dann diesem Pfad entspricht. Du hast jetzt zweimal "sound.mp3", aber mit unteschiedlichem Inhalt. Wenn du von "soundtest/test.html" die "swf/sound/sound.mp3" wiedergeben willst, musst du den Pfad in der "test.html" entsprechend ändern auf "swf/sound/sound.mp3". Ich verwende übrigens die Schreibweise "./swf/sound/sound.mp3", weil sich das ja auf untergeordnete Ordner bezieht.

Ich habe nicht umsonst zwei unterschiedliche Dateien "sound.mp3" gewählt - nämlich, um den Unterschied hören zu können.
Ich _möchte_ ja gerade das (eventuell fehlerhafte) Verhalten von einigen Browsern provozieren, um herauszufinden, welcher Browser daneben liegt.
Mir geht es dabei nicht um den direkten Aufruf der Datei "TestURIs.swf" - dieser dient nur dazu, um zu demonstrieren, dass hier eine andere MP3 abgespielt wird als wenn man die Webseite test.html aufruft.

Entscheidend für mich ist das, was beim Aufruf der Datei "test.html" passiert - und bei welcher Browser- und Plugin-Version _eben nicht_ "sound/sound.mp3" abgespielt wird, sondern z. B. "swf/sound/sound.mp3" oder eventuell sogar gar nichts.

Ist hier noch jemand mit einigen älteren Browsern (vorzugsweise IE, Opera und Firefox) und eventuell einem älteren Flash Plugin als 9 unterwegs, der mir sagen kann, was er hier hört?
Ich habe die folgenden Browser getestet (alle mit Flash Plugin 9), und konnte immer "sound/sound.mp3" hören:

  • Firefox 2.0 (Linux / Windows)
  • Konqueror (Linux)
  • IE 6.0 (Windows 2000, mit neuesten Updates)
  • Opera 9.1 (Windows)

Hier müsste generell der Sound "sound/sound.mp3" abgespielt werden, das entspricht deiner Pfadangabe.

Natürlich. Aber ich erinnere mich leicht an eine ältere Version eines Browsers (oder des Flash Plugins in Kombination mit einem Browser), der an dieser Stelle (fehlerhaft) "swf/sound/sound.mp3" abspielt - und ich wüsste gerne, welche.

Sag mal, weil wir gerade so schön am Plaudern sind: Gibts eigentlich den Schnecken-Schröder noch? Gehört der zum Programm des SELF-Treffens?

Wie soll ich das verstehen? ;-)

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)