Marc Reichelt: Loops ohne Verzögerungen abspielen

Beitrag lesen

Hallo Gernot,

Nun meine Frage: Wieso nicht Flash?

Nach allem was ich so lese ...

http://www.flashforum.de/forum/showthread.php?t=166246&highlight=nahtlos+loop

http://www.sonify.org/home/feature/remixology/004_prepareloops/page2.html

... wird bei Flash immer geraten, Loops direkt als WAV in die Flashbibliothek zu importieren und sie dann bis zu 999 mal hintereinander abspielen zu lassen.

Auf den Seiten die du verlinkt hast wird immer die alte Lösung empfohlen - nämlich die Sounddatei so in die SWF-Datei einzubinden (als WAV), damit ein Loop über eine einfache Funktion möglich wird.
Mein Vorschlag ist es aber, die MP3-Datei so zu lassen wie sie ist - und eine kleine ActionScript-Funktion zu erstellen, die für den Loop sorgt.
Und nein, ich spreche nicht von einem einfachen
sound.start(offset, loop);
oder einem Abfangen des Events onSoundComplete - denn genau da treten ja die Latenzzeiten auf, die du verhindern möchtest.

Nun möchte ich aber mehrere, auch mal wechselnde Loops präsentieren und fände es lästig, für jeden zuerst einen eigenen Flashfilm zu erstellen. Auch fürchte ich, dass die MP3, die Flash beim Export aus dem 999 mal hintereinandergesetzten WAV erstellt, vom Dateiumfang her deutlich größer ist als das ursprüngliche WAV-File. Aber das wäre noch zu überprüfen.

MP3 ist üblicherweise wesentlich kleiner als WAV.
Und bei der von mir vorgeschlagenen Methode braucht man auch keine WAV-Datei mehr direkt in die SWF-Datei einzubinden, sondern kann externe MP3-Dateien verwenden (dynamisch aus dem ActionScript-Code heraus).

Im Bezug auf den von dir vorgeschlagenen Ansatz glaube ich nicht, dass der "extra space" am Anfang und am Ende einer MP3-Datei, von dem beim zweiten der beiden obigen Links die Rede ist, und der das nahtlose Loopen in Flash verhindert, bei allen MP3-Dateien gleich ist oder dass es da einen allgemeingültigen Algorithmus zu dessen Ermittlung aus anderen soundimmanenten Werten gibt. Man müsste sich also dann mühsam bei jedem Loopstück durch Trial&Error-Technik an den erforderlichen zeitliche Korrekturwert beim Umschalten zwischen den beiden Tonspuren herantasten.

Ich bin mir sicher, dass man für die meisten MP3s einen gewissen Standard einstellen kann. Sollte ein MP3-Loop (aus irgendwelchen Gründen auch immer) von diesem Standard geringfügig abweichen, kann man das über einen Parameter verändern.

Für mein Projekt verfolge ich im Moment den alten Ansatz weiter, den ich vor zwei Jahren hier schon einmal kurz vorgestellt habe:

Beim IE verwende ich das BGSOUND-Element, bei den übrigen Browsern das Quicktime-Plugin, weil ich davon ausgehe, dass Leute, die sich einen anderen Browser als den vorinstallierten herunterladen, in aller Regel auch versiert genug sind, im Bedarfsfall ein Plugin nachzuinstallieren.

Natürlich. Schon mal aufgefallen, dass es kein natives QuickTime-Plugin für Linux gibt?
Und noch etwas solltest du bedenken: Wieso sollte sich der Nutzer des Browsers dafür entscheiden, den IE zu verwenden oder Quicktime zu installieren, nur um einen Loop abzuspielen?
Üblicherweise beträgt die Besuchszeit eines Surfers auf einer Webseite nur wenige Sekunden. Die meisten Surfer werden sich nicht extra für einen Loop ein weiteres Plugin installieren - es sei denn, sie zeigen _wirklich_ Interesse an der Webseite.
Und sind danach wahrscheinlich sogar enttäuscht, wenn ihnen dann (nach Installation des Plugins) nichts geboten wird.

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:)