Die Welt ist gar nicht so.

Sie ist ganz anders.

11 Kommentare

Videos einbetten – standardkonform und ohne Flash

Für Videos wird im Web meistens Adobe Flash verwendet – Gerrit van Aaken berichtete (via Peter Kröner), dabei ergeben sich allerdings einige Problematiken, die sowohl technischer, als auch ideologischer Natur sind. Mit (X)HTML5 soll zwar eine Lösung – in Form des Video-Elements – erscheinen, da die Spezifikation jedoch noch nicht fertiggestellt ist, wird diese Möglichkeit zur Zeit im besten Fall nur von Entwicklerversionen der Browser unterstützt.

Bis HTML 5 spezifiziert und implementiert ist, kann man für standardkonformes Einbetten von Videos das in (X)HTML enthaltene Object-Element verwenden. Bei dieser Vorgehensweise wird das Video allerdings üblicherweise sofort abgespielt; dies ist nicht immer erwünscht. Durch den Einsatz von Javascript lässt sich dieser Mangel beheben.

Zunächst wird innerhalb des Body-Elementes der Website ein Object-Element erstellt. Dieses erhält ein Id-Attribut, um es identifizierbar zu machen. Zudem erhält es Fallback-Inhalt, der auf das Fehlen eines passenden Mediaplayer-Plugins hinweist. Als Film wird hier die 480p-Version von Big Buck Bunny verwendet.

<object id="video" type="application/ogg" width="720" height="400" data="movie.ogg" > <p> <strong>Dein Browser unterstützt das Abspielen von <em>Ogg-Theora</em>-Videos nicht.</strong> </p> <p> Um dieses Video anzuschauen, installiere <a href="http://www.videolan.org/vlc/">VLC</a>, <a href="http://www.mplayerhq.hu/design7/dload.html">mplayer</a> or <a href="http://wiki.xiph.org/index.php/TheoraSoftwarePlayers">einen anderen Mmediaplayer</a>, der <a href="http://theora.org/faq/#what">Ogg-Theora</a>-Videos abspielen kann. </p> <p> For installation instructions, see the <a href="http://en.wikipedia.org/wiki/Wikipedia:Media_help_(Ogg)">Wikipedia Media Help</a>. </p> </object>

Damit das Object-Element nicht sofort angezeigt wird, fügt man zwei Javascript-Funktionen hinzu: Eine, die das Video versteckt, und eine zweite, die es für die Dauer des Filmchens anzeigt und dann die “Versteck-Funktion” aufruft:

<script type="text/javascript"><![CDATA[ function hide_movie() { document.getElementById('video').style.display = 'none'; document.getElementById('preview').style.display = 'block'; } function show_movie() { document.getElementById('video').style.display = 'block'; document.getElementById('preview').style.display = 'none'; window.setTimeout("hide_movie()",36000); } ]]></script>

Vorschaubild und Button – zum Aufrufen des Javascripts – sind auch fein ! Zugterletzt bekommt das Body Object-Element ein Attribut onload="hide_movie()" style="display:none;", um das Video zu verstecken; zu beachten ist, dass dieses – zumindest im Firefox 3.0 – nur ausgelöst wird, sofern das im Object-Element referenzierte Video pufferfrei ladbar ist Nutzer ohne Javascript das Nachsehen haben.

<div id="preview"> <img src="preview.jpg" alt="Vorschaubild" height="400" width="720"/> <button name="playback" type="button" onclick="show_movie()" value="Plackback"> <img src="media-playback-start.png" alt="Plackback" height="128" width="128" /> </button> </div>

Wer Spaß daran hat, darf gerne den Playback-Button per CSS auf das Vorschaubild legen und einen Download-Button hinzufügen. Die vorliegende Methode ist übrigens XHTML-konform, funktioniert auch ohne Javascript, und wurde ursprünglich als Teil des (noch unfertigen) Video-CMS Yolanda entwickelt. In diesem Sinne: Friede den Webstandards, Krieg den proprietären Palästen !

Update: Demo; blöderweise wird onload="hide_movie()" zumindest im Firefox 3 erst nach vollständigem Puffern des Videos ausgelöst. Ideen ?

Update: Neue Demo. Aber ohne Javascript ist der Button funktionslos.

admin

Du kannst Kommentaren mit Hilfe des Feeds folgen: RSS 2.0 Das Hinterlassen von Kommentaren und Trackbacks ist erlaubt und erwünscht.

11 Kommentare

Andreas D.Juli 7th, 2008 um 22:00

Hm doch nicht alles so rosig:
Hab VLC und den mplayer installiert und bekommw im Firefox 3 trotzdem die Meldung „Dein Browser unterstützt das Abspielen von Ogg-Theora-Videos nicht“.

Diesen Beitrag zitieren

Andreas D.Juli 7th, 2008 um 22:20

Plugins hab ich auch installiert.
Aber ich hab jetzt auch raus gefunden woran es liegt. Ich hab den VLC installiert wie ich noch mit dem Firefox 2 unterwegs war. Und scheinbar hat der 3er das Plugin nicht mit übernommen. Im 2er geht’s jedenfalls und nach einer Neuinstallation im 3er jetzt auch.

Vielleicht hätte ich dass mal überprüfen sollen bevor ich hier rum mecker. Andererseits ist es ja nicht nur ob es geht sondern auch woran es alles hängen kann.

Ich würde jedenfalls den Hinweis dass man den VLC usw. installieren muss noch um einen Hinweis ergänzen dass mann vor allem auch das entsprechende Plugin installieren sollte.

Diesen Beitrag zitieren

Gerrit van AakenJuli 8th, 2008 um 09:31

Wie wäre es, wenn Du noch eine Variante mit einem allgemein üblichen Videoformat bastelst? OGG Theora hat außerhalb der Linux-Gemeinde eine Verbreitung von geschätzten 3 %.

Mach doch eine Variante für QuickTime-kompatible Dateicontainer (MOV,3GP, MP4), und noch eine weitere Variante für WindowsMedia-Filmchen. Weil: Da ist die Praxis! In der Theorie bringen mir standardkonforme Techniken leider gar nichts!

Diesen Beitrag zitieren

erlehmannJuli 8th, 2008 um 17:04

Naja, man muss ja bloß den MIME-Typ ändern, strukturell ist das nichts anderes. Firefox und Opera sollen aber bald nativ Theora können wg. dem Video-Element aus HTML 5; Chris Double meinte im IRC, dass Firefox 3.1 gegen Ende des Jahres mit ebendiesem Feature käme.

Diesen Beitrag zitieren

despJuli 11th, 2008 um 02:32

flash ist eines der wenigen formate, die jeder mainstreambrowser problemlos handlen kann. selbst eine anständige bufferingmethode lässt sich ganz einfach implementieren. ganz im gegensatz zu anderen playern, wo die videos ständig ruckeln, wenn sie denn überhaupt geladen werden.
einen flashplayer kann ich selber bauen und konfigurieren wie ich will, und ich kann mir dabei sogar sicher sein, das die kompatibilität dabei nicht eingeschränkt wird. bei anderen playern geht das nicht.

btw: der quelltext in deinem artikel zerschiesst den frame

Diesen Beitrag zitieren

Einen Kommentar hinterlassen