11 Aug 2009

Der <video>-Tag ist eine Neuerung von HTML 5 und dient dazu, Filme und Videos abzuspielen. Videos können — wie Bilder mit dem <img>-Tag — direkt in eine HTML-Seite eingebettet werden. Selbstverständlich können die Videos deshalb auch mit CSS und JavaScript kombiniert werden.
Nach den ersten Video-Tag Demos mit HTML 5 wird in diesem Artikel gezeigt, wie man Videos selbst einbaut und den <video>-Tag aus HTML 5 mit aktuellen Browsern bereits einsetzen kann.
Zum Abspielen sind mit HTML 5 keine Browser-Plugin wie z.B. Silverlight oder Flash Player nötig. Voraussetzung für den <video>-Tag ist lediglich ein aktueller Browser wie Firefox (ab 3.5) oder Safari (ab 4).
Leider wurde bisher kein gemeinsamer Nenner von den Browserherstellern gefunden, welche Video-Codecs eingesetzt werden dürfen/müssen. Die möglichen Codecs hängen deshalb vom Browser ab.
Firefox kann Videos mit Theora-Codec in einem Ogg-Container (.ogv) abspielen. Der dazugehörige Ton muss als Vorbis vorliegen. Für die Tonspur wäre auch das Wave-Format möglich, das aufgrund der fehlenden Kompression jedoch in der Regel im Web wenig sinnvoll ist.
Safari hingegen setzt auf das MPEG-4-Format mit dem bekannten und effizienten Codec-Duo H.264 (Video) und AAC (Audio). Dies verspricht eine bessere Qualität als Theora, allerdings stoßen die MPEG-4-Lizenzgebühren bei den anderen Herstellern wie Opera nicht auf Gegenliebe.
Erwähnenswert: Die beschriebenen HTML 5-/Video-Features sind auch in der mobilen Safari-Version für das iPhone verfügbar und einsetzbar (ab iPhone OS 3).
Google Chrome unterstützt in der aktuellen Beta (ab 3.0.182.2) sowohl Theora als auch H.264. Allerdings gibt es den H.264-Support nur in der von Google selbstvertriebenen Browser-Variante (also Google Chrome), wohingegen das zugrundeliegende Open Source Projekt Chromium dies aus besagten Lizenzkosten nicht kann.
Von Microsoft gibt es bisher noch keine Informationen, wie die Firma zu diesem Thema steht. Für den IE muss deshalb ein Fallback definiert werden (siehe unten). Update: Internet Explorer unterstützt H.264.
Serverseitig muss beim Progressive Download, also dem Abspielen von einem gewöhnlichen Webserver, nichts besonderes beachtet werden.
Bei Ogg-Dateien (.ogv) könnten eventuell noch serverseitige Probleme entstehen, wenn der MIME-Type für Ogg-Videos nicht gesetzt ist. Dies lässt sich jedoch beheben, wenn man eine htaccess-Datei mit dem Befehl AddType video/ogg .ogv angelegt. Hinweis: Nach dem Anlegen der htaccess-Datei zum Ausprobieren den Browser-Cache löschen!
Das erste Beispiel zeigt, wie man ein Video auf einfachste Weise einbindet. Es wird lediglich die Größe festgelegt. Der Parameter autoplay sorgt dafür, dass das Video sofort abgespielt wird.
Je nach Codec-Unterstützung des Browser (siehe oben) ist sieht das Ergebnis so aus: Beispiel anschauen (Ogg-Video) bzw. Beispiel anschauen (MPEG-4)
Nicht besonders toll, wenn man jeden Browser unterschiedlich behandeln muss, oder? Doch es geht einfacher, wie das nachstehende Beispiel zeigt. Gibt man mehrere Quelldateien an, kann der Browser sich die unterstützten Formate selbst heraussuchen.
Firefox nimmt Ogg, Safari nimmt MPEG-4. Und was macht Chrome, der beides kann? Hier wird das oberste verwendet.
Beispiel anschauen (Ogg und MPEG-4)
Für ältere Browser, die kein HTML 5 unterstützen, lässt sich ein alternativer Code für einen Fallback definieren. Dieser wird — in Form eines gewöhnlichen HTML-Codes — einfach innerhalb des <video>-Tags geschrieben.
Öffnet man eines der beiden Beispiel oben im Internet Explorer oder einem älteren Browser, wird lediglich der Text „This browser is not compatible with HTML 5” angezeigt. Selbstverständlich können an dieser Stelle auch komplexere HTML-Elemente oder JavaScript-Befehle stehen.
Besser als ein Text wäre natürlich eine wirkliche Alternative anzubieten. Dies könnte beispielweise ein Code sein, der das Video im Flash Player abspielt.
In der Regel werden Bedienelemente benötigt, damit der Nutzer das Video z.B. pausieren oder darin spulen kann. Die Browser bringen deshalb von Haus aus eine „Standard-Bedienleiste” mit, die allerdings alle unterschiedlich aussehen (links: Firefox, rechts: Safari). Beim iPhone öffnet sich der (integrierte) Mediaplayer, der auch für die YouTube-Wiedergabe verwendet wird.

Damit das Player-Skin erscheint, aktiviert man dieses über controls
Beispiel anschauen (Controls)
Um Verwirrung zu vermeiden (der ich ebenfalls erlegen bin): Man könnte meinen, dass die Eigenschaft über controls="true"oder controls="false" ebenfalls aktiviert bzw. deaktiviert werden kann. Dies ist jedoch nicht so! Die Begründung:
A number of attributes in HTML5 are boolean attributes. The presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value.
Also: Einfach das Attribut weglassen oder hinzufügen, dann sobald die Eigenschaft verwendet wird, gilt sie als aktiviert.
Mit width und height wählt man die Größe, in der das Video abgespielt werden soll. Idealerweise sollte die Größe mit der nativen Auflösung der Videodatei übereinstimmen.
Die Eigenschaft autoplay legt fest, ob das Video automatisch gestartet werden soll oder nicht.
Die Eigenschaft autobuffer ist normalerweise deaktiviert. Das Video wird deshalb erst dann heruntergeladen, wenn der Nutzer auf den Play-Button drückt (oder autoplay verwendet wird). Aktiviert an das automatische Buffering jedoch, wird das Video beim HTML-Seitenaufruf sofort komplett heruntergeladen. Beispiel anschauen.
Mit poster kann man ein Bild hinterlegen (z.B. poster=poster.jpg). Dies wird zum einen angezeigt, solange das Video noch nicht geladen ist. Zum anderen wird es auch dargestellt, wenn es Probleme mit dem Videofile (z.B. nicht vorhanden).
Beispiel anschauen (Bild wird angezeigt, weil das Videofile nicht existiert)
Hinweis: Allerdings funktioniert dies zurzeit noch nicht mit Firefox, da es dort in Version 3.5 nicht implementiert ist.
In einem weiteren Artikel werde ich zeigen, wie sich der Video-Tag mit JavaScript/CSS kombinieren lässt, um z.B. ein eigenes Player-Skin zu implementieren. Stay tuned …
Link: W3C
Link: Media formats supported by the audio and video elements
Link: Codecs for <audio> and <video>
26 Kommentare zum Beitrag "Einführung: Videos einbinden mit HTML 5"
thx, hat mir sehr geholfen
[...] der Syntax des video-Tags und der möglichen Parameter bei w3Schools (englisch) Hervorragender Workshop bei video-flash.de Eintrag merken [...]
Guter Artiker, sehr interessant. Ich freu mich richtig darauf, dass die neue Firefox-Version noch diesen Monar kommt. Denn dort wird HTML5 scheinbar ebenfalls unterstüzt.
Danke. Ich finde den Video-Tag in HTML5 auch eine sinnvolle Sache. Mit IE9 soll ja auch HTML5 kommen.
Sehr gut, vielen dank….wenn ich jetzt noch Wüsste wie ich ein "Hintergrundbild definieren…bzw. wie ich das Video sozusagen über einem Bild abspielen kann wäre das sehr genial….So das dieses Video immer 50px von oben und 30 von links auf dem Bild positioniert wird, egal wo das Bild auf der Seite ist….
@Colin: Du kannst das Video-Element einfach in einen HTML-Container werfen und diesem über CSS ein Hintergrundbild geben.
flo, vielen dank, genau das ist die Lösung….warum ich das im ganzen Web nicht gefunden habe ist mir nun ein Rätsel, aber so funktioniert das…sollte mich unbedingt mehr mit CSS beschäftigen, aber eben bin mehr am Inhalt der Seite zu arbeiten…;)
Der HTML5-Videotag ist noch recht neu, deshalb findet man wahrscheinlich bei Google noch nicht so viele Ergebnisse.
Aber man kann wie mit jedem anderen HTML-Element arbeiten … praktische Sache, der Video-Tag :)
Hi,
bei mir läuft es im Firefox 3.5 lokal aber nicht online. Bei Chrome funktioniert es seltsamerweise. Hat einer eine Idee woran das liegen kann?
Grüße
Munch
Das obige Beispiel oder allgemein?
Das obige Beispiel. Gleiches Video und gleicher Quellcode… quasi nur dein Beispielseite kopiert…
Seltsam, bei mir funktioniert es. Habe ich leider keinen Tipp dazu.
Top Artikel
hat mir geholfen
weiter so
Wer sein Video mal eben zum Testen von HMTL5 nach Theroa konvertieren möchte, dem empfehle ich ein Online Konvertierer, z.B. mit: http://video.online-convert.com/convert-to-ogg
Super Beitrag. Gibt's den angekündigten Artikel über das eigene Player-Skin schon irgendwo?
Danke. Leider nein, die Rohfiles hatte ich zwar schon erstellt, aber es wurde nie ein Beitrag draus :-(
Schreib's mir aber mal auf die Agenda.
Hey, echt super Beitrag. Sehr leicht verständlich und vorallem sehr gut strukturiert. Auch ich würde mich über den Artikel über das eigene Player-Skin freuen. Ich hoffe da wird was draus :)
Mit IE7 und IE8 geht kein HTML5.
Microsoft hat jetzt mit dem Internet Explorer 9 (IE9) angekündigt, sowohl HTML5 und damit auch H.264 als Videocodec einzuführen.
ihr habt opera vergessen :/
Echt ein super Artikel, der die Grundlagen vernünftig und übersichtlich erklärt. Beim Durchlesen der W3C-Specs ist mir aufgefallen, dass das "autobuffer"-Attribut zu "preload" umbenannt worden ist. Vielleicht kannst du das ja in deinem Artikel ergänzen. ;-)
HTML 5
sehr gut ich habe einen Film Quick T , den würde ich gerne im HTML Format umwandeln.
Kennt jemant eine Mac Software die das macht.
Danke Peter
Ein „HTML-Format” gibt es nicht. Du solltest MPEG-4 (H.264/AAC) verwenden. Dies geht z.B. mit QuickTime Pro.
Hier auch ein passender Beitrag:
http://www.video-flash.de/index/open-source-mpeg-4-flashvideo-encoding-mit-ffmpegx-x264-aac/
Der Code hat mir sehr geholfen, funktioniert einwandfrei. Da ich nur mit iWeb arbeite und keine Ahnung von der Programmierung habe wäre ich um einen fertigen Code mit Flash-Fallback eines gängigen Flashplayers dankbar.
Merci und Gruß – Markus
Vielleicht ist hier ein fertiger HTML5-Videoplayer für dich dabei:
http://www.video-flash.de/index/html5-video-player/
http://www.video-flash.de/index/html5-videoplayer-uebersicht2/
Der Beitrag ist sehr hilfreich. Allerdings würde ich mich auch über den Beitrag mit eigenem Design freuen.
Hallo,
ich habe zum Testen mich genau nach Deinen Anweisungen und Code oben gehalten – es hatte aber bei mir nicht funktioniert (Safari und IE) … Warum auch immer.
Ich habe folgenden Code innerhalb des <video> Tags dazugefügt, nun funktioniert es einwandfrei auf allen Browsern, auch älteren und ohne Flash Fallback:
<object width="640" height="375" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"><!
[endif]–><!–[if !IE]><!–>
<object width="640" height="375" type="video/quicktime" data="test.mp4">
<!–<![endif]–>
Schreibe einen Kommentar