Join Steve Heffernan for an in-depth discussion in this video Using the video and audio tags, part of HTML5: Video and Audio in Depth.
So now we're going to get into using the video and audio tags. The video you see here-- (Music playing) It's not being played back with any third-party plug-ins like Flash. It's using the video tag. So now, just like the image tag for images, we have a video tag for video and an audio tag for audio. That's what I'm going to show you how to use today. If you have the exercise files, we would be in the, let's see, 2-01 and the video.htm file.
I'm going to go ahead and drag that to my text editor. As we scroll down the page, we'll see a comment that says <!-- Video Goes Here --> and that's where we're going to start. The first thing we need is an opening and closing video tag. Now you'll notice compared to an image tag we have a closing video tag and that's not optional. You have to have the closing video tag and there's couple of reasons for that. One is so that we can put other related tags inside of it and that includes things like the source tags for providing other sources or the track tag, which we will go in to later.
Then the other reason is to provide fallback content. So if the video tag isn't supported, it can fallback to anything we have in this area. So this can be as simple as a paragraph tag that says, "Your browser does not support video." And then beyond that we could also put a third-party plug-in player here like a Flash Player so that I could fallback to that for browsers that don't support HTML5. We will get into all that later but let's keep going with the video tag and next thing we need is the source attribute.
So it's very similar to the image tag and the source I'm going to use is in our video assets folder, which is at ../_video and we're going to use the podcast.ogv file. I'm going to use the OGV file because I know this will work in the browser I'm using for this example, Firefox. If you're using Safari or Internet Explorer 9, you can use a .mp4 file and that will work for this exercise in those browsers. So, I'm going to save that and our file is at the 2-01 folder, file video.htm, open that up.
And here we go. Here's the video that we just embedded but we see the video and it's actually showing the first frame, but we can't do anything with it. We can't play the video and it's not just playing by itself. It's because we haven't given any way to control the video. So, the next thing we need to do is add controls. So I'm going to go back to my text editor and to add controls, all we need to do is add the controls attribute. It's as simple as that. It's a Boolean attribute so it's either true or false.
If we include it, it's true. If we exclude it it's false. If you're using an XHTML doc type, you can always expand it to controls="controls". But if you're using the HTML5 doc type, which id we scroll up it looks like just <!DOCTYPE HTML>. You don't need to expand it like that. We can just leave it, "controls". So do that and I will go ahead and save the file and we'll go back to our Web browser, reload the page and now we have controls. We can play it.
(Video playing) We can pause the video, we can scrub along the timeline, and we can change the volume. So awesome. That's as simple as it is to embed a video using HTML5. Let's go and do the same for audio. Go back to our text editor and if you scroll down a little farther you'll see a comment that says <!-- Audio Goes Here --> and so that's where we put our audio tag, starting with an opening and closing audio tag. We will do our fallback that says, Your browser does not support audio.
And then our source attribute, which in this case is at ../_audio in our audio folder, and the file is podcast-audio.oga. So this again will work in Firefox. You can use the M4A file if you're using Safari or Internet Explorer 9. And then we also want our controls. So I'll save that, go back to our browser, reload the page. Now we have our audio here as well. We can play it. (Audio playing) It works, awesome.
Okay, let's go back to our code and I just want to stop here and point out that ideally, in the future this is what it will look like to embed video in your web page, say in 10 years when everyone has HTML5-compatible browsers and they all support the same video format. It's very clean, readable, not a lot of object embed param tags that you'd find with the plug-ins. Definitely worth working towards. But currently, this isn't enough. If we load this in IE 6, 7 or 8, you'll get the paragraph that says Video is not supported, which obviously isn't ideal because this could be half of your user-base.
If we load this on an iPhone or for that matter Safari or IE 9 you'll get a broken video because those browsers don't support the ogg formats that I used in the example. So from here it's going to get a little dirtier as we build in support for multiple formats and fallbacks for older browsers and devices, but someday it will be this simple and I'm sure we're all looking forward to that.
- Understanding the differences in media formats
- Preloading, autoplaying, and looping in HTML5
- Setting a video's width and height attributes
- Displaying subtitles and captions
- Generating embed code with an embed code builder
- Encoding files using HandBrake, Firefogg, and VLC
- Creating a load progress bar
- Recognizing Android and iOS issues