HTML5 audio and video
This article or section is currently under construction
In principle, someone is working on it and there should be a better version in a not so distant future.
If you want to modify this page, please discuss it with the person working on it (see the "history")
Introduction
This tutorial shows basic use of video and audio in HTML5. HTML5 includes special elements (tags) allow including video and audio that and defining controls. Unlike in HTML 4.x and XHTML 1.x, video and audio is fully integrated, meaning that these elements can also be styled and scripted via the DOM.
Before learning how to use video and audio in HTML5, you need to understand that these media files are actually containers (i.e. so-called Multimedia container formats) that include in turn various types of data, e.g. video and audio streams, chapter-information, captions (subtitles) and meta-information plus synchronization information. Audio and video data are compressed with so-called codecs (compression and decompression algorithms)
The most popular HTML5 formats are webm/VP8, mp4/H.264 and OGG/Theora (ogv). Originally, the HTML5 specification wanted include OGG as standard, but after vendor opposition, it was decided to support all formats.
The following table provides an overview of implementations as of April 2012. It does not include browser extensions that will add extra functionality. See Wikipedia's HTML5 for more detailed information.
Browser | Formats natively supported by different web browsers (April 2012) | ||
---|---|---|---|
Ogg (Theora/Vorbis) | mp4 (H.264/AVC | Webm (VP8/Vorbis) | |
IE (9) | No | Yes | No |
Firefox (11) | Yes | no | Yes |
Chrome | Yes | maybe | Yes |
Safari | No | Yes | No |
Opera | Yes | No | Yes |
Android | Yes | Yes | Yes |
The example video we are using is this page was taken from Vimeo. It includes a 2011 talk about the state of Wikipedia by Jimmy Wales, its founder. We produced several versions without paying a lot of attention to encoding details.
Basic use of video
While the video tag and its attributes are standardized, the video formats (i.e. containers and codecs) are not. For this reason, it is good practice to include several variants of the same file. Since the HTML5 video element doesn't work with older browsers and since default skin and controls differ among browser makers, you also may consider using an HTML5 video player library.
Example file: http://tecfa.unige.ch/guides/html/html5-video/html5-video-simple.html (also look at its source code).
Too simple use
The following example code shows how to include a single video format. We will show three variants, one for each of popular the HTML5-supported formats. Including a single variant is not recommended. See below for defining alternatives.
<video src="videos/state-of-wikipedia-480x272.ogv" controls>
Sorry, your browser doesn't support HTML5 video
</video>
<p>This example wouldn't work in a browser like IE9 that doesn't support Ogg</p>
<video src="videos/state-of-wikipedia-480x272.mp4" controls>
Sorry, your browser doesn't support HTML5 video
</video>
<p>This example wouldn't work in a browser like Firfox that doesn't support mp4</p>
<video src="videos/state-of-wikipedia-480x272.webm" controls>
Sorry, your browser doesn't support HTML5 video
</video>
<p>This example wouldn't work in a browser like IE9 that doesn't support webm</p>
Simple use of alternatives
The following code shows how to define three alternatives with a fallback message for non HTML5 browsers.
<video id="movie1" controls>
<source src="videos/state-of-wikipedia-480x272.mp4">
<source src="videos/state-of-wikipedia-480x272.ogv">
<source src="videos/state-of-wikipedia-480x272.webm">
Your browser doesn't support HTML5. Maybe you should upgrade.
</video>
The following code shows how to define alternatives that specify codecs. This method is useful if you plan to include "high quality" videos that some clients may not support.
<video id="movie2" controls>
<source src="videos/state-of-wikipedia-480x272.mp4"
type='video/mp4;codecs="avc1.42E01E, mp4a.40.2"' />
<source src="videos/state-of-wikipedia-480x272.ogv"
type='video/ogg; codecs="theora, vorbis"' />
<source src="videos/state-of-wikipedia-480x272.webm"
type='video/webm; codecs="vp8, vorbis"' />
<p>The video is available as <a href="videos/state-of-wikipedia-480x272.mp4">H.264 in an MP4 container</a>,
or as <a href="videos/state-of-wikipedia-480x272.ogv">VP8 in a Ogg container</a>
or as <a href="videos/state-of-wikipedia-480x272.webm">VP8 in a
WebM container</a>. </p>
</video>
The HTML5 video element
Parameters and contents of the video element
HTML5 attributes work like HTML4 attributes, i.e. so-called boolean attributes dont' need to include a value. In addition, it seems that attribute values don't need to be quoted in HTML5. The following two lines are strictly equivalent.
controls controls="controls"
- src
- Allows to define a single video file. See the source element below for a better alternative
- Example:
src="myfile.webm"
- poster
- Will display a picture
- Example
src="vaction_picture.jpg"
- controls
- Defines if use controls should be displayed. By default there will be none.
- Example1:
controls
controls = "controls"
- width and height
- Allow to define size of the video element
- By default width and height will adapt to the original size.
Parameters of the source element
HTML5 player libraries
Since default controls in navigators do not offer a lot of functionalities and since there still many non-HTML5 navigators installed, so-called HTML video-players can offer both advanced controls and fallback. These players are implemented with JavaScript, offer different functionaly and may or may not be easy to use. More precisely, this principle can be explained by example: “An HTML5 Video Player is a JavaScript library that builds a custom set of controls over top of the HTML5 video element to provide a consistent look between HTML5 browsers. Video.js builds on this by fixing many cross browser bugs or inconsistencies, adding new features that haven't been implemented by all browsers (like fullscreen and subtitles), as well as providing one consistent JavaScript API for both HTML5, Flash, and other playback technologies.” (What's an HTML5 Video Player, retrieved 13:36, 22 April 2012 (CEST) from vidojs.com). Other player products could be described in the same way.
Some of HTML5 players are:
HTML5 Video.org offers a HTML5 Player Comparison, i.e. provide and overview table plus a detailed description of each HTML5 Player library. Recommended reading.
Basic use of audio
Video capturing
Links
Specifications
- HTML5: The Markup Language HTML: The Markup Language An HTML language reference], W3C Working Draft 15 March 2012, by Michael Smith, W3C. (Multi-page version)
- WebRTC 1.0: Real-time Communication Between Browsers, W3C Editor's Draft 16 March 2012. This specification defines a set of APIs to represent streaming media, including audio and video, in JavaScript, to allow media to be sent over the network to another browser or device implementing the appropriate set of real-time protocols, and media received from another browser or device to be processed and displayed locally.
- getusermedia: Getting access to local devices that can generate multimedia streams. W3C Editor's Draft 22 December 2011. This document defines a set of APIs that allow local media, including audio and video, to be requested from a platform.
Manuals and reference
- HTML/Elements/video (W3C wiki)
- HTML5 video (Wikipedia)
Tutorials
- Towards Video on the Web with HTML5 by Daoust, Francois; Hoschka, Philipp; Patrikakis, Charalampos Z (2010)
- Introduction to HTML5 video by Lawson, Bruce; Lauke, Patrick H. (2010-02-11)
- Everything you need to know about HTML5 video and audio by Pieters, Simon (2010-03-03)
- Video for everybody (shows how to use videos that also will work in older browsers)
- How to Use HTML 5 to Display Video in Modern Browsers by By Jennifer Kyrnin, About.com Guide
- Getting Started - Navigating HTML5, at HTML5video.org. Actually not much of a getting started article, but rather about history and strategy.