FLV-Videos “Seek and Play”

Montag, November 17th, 2008 | Developing, Flash, Miscellaneous, RIA

Wem ist es nicht schon einmal aufgefallen…

Man sieht sich ein Flash-Video an und möchte, gerade bei großen HD-Formaten, kurz mal “vorspulen” um z.B. ein nerviges Intro zu überspringen. Doch was passiert? Der Abspielkopf springt, sofern der entsprechende Teil des Videos nicht bereits vorausgeladen ist, nicht an die gewünschte Stelle.

An sich sollte man doch davon ausgehen können, dass der FlashPlayer zu so etwas ohne großen Aufwand im Stande ist. Doch das Problem liegt nicht direkt am FlashPlayer, sondern daran, dass im Hintergrund keine Informationen verfügbar sind, zu welcher Stelle in der Quell-FLV-Datei gesprungen werden soll.

Nachdem ich bei der Arbeit an der Seite für “RaveOnSnow” auf eben jenes Problem gestoßen bin, wollte ich es einfach nicht hinnehmen, dass man mit regulären Mitteln anscheinend gezwungen ist, dem Betrachter ein solches (veraltetes) System aufzuzwingen.

Doch ohne einen Streaming-Server wie den FMS von Adobe oder dem Open-Source-Projekt Red5, muss man sich nach Alternativen umsehen.

Fündig geworden bin ich dennoch. Einerseits benötigt man einen “Metadaten-Injector”, der eine FLV-Datei analysiert und anhand der Timecodes eine Tabelle erstellt, die exakt die jeweiligen Abspielzeiten den passenden Positionen in der Quelldatei zuordnet. Diese werden anschließend als Metadaten in die FLV eingefügt und stören den eigentlichen Fluß des Videos in keinster Weise. Vorteil ist nun aber, dass bei einem Klick auf den Abspielkopf zusätzliche Daten über den gefeuerten Event mitgeliefert werden, wodurch, an eine entsprechende PHP-Datei weitergegeben, ein gewisses Streaming simuliert werden kann.

Vom Prinzip her ist es vergleichbar mit einer Schallplatte. Der Injector klebt z.B. nach jeder Sekunde Abspielzeit ein kleines gelbes PostIt als Marker auf die Platte, nach je 10 Sekunden ein rotes und beim Beginn eines neuen Lieds ein blaues.

Hätte die Nadel des Plattenspielers mit den PostIts keine Probleme, wäre dies eine perfekte Möglichkeit schnell und exakt an bestimmte Stellen springen zu können. Nichts anderes ermöglicht die Kombination aus dem Injector, dem PHP-Skript und einigen Anpassungen im ActionScript-Quellcode des FLV-Players.

Hier mal die Links zu den benötigten Tools und Skripts:

Dass das ganze einwandfrei funktioniert, davon könnt ihr euch auf der “SnowShow”-Seite von RaveOnSnow überzeugen. Einfach auf http://www.raveonsnow.com klicken und oben im Menü auf SnowShow.

Falls ihr noch Fragen habt schreibt sie in die Comments.

Noch keine Kommentare.

Einen Kommentar schreiben