Copy link to clipboard
Copied
What are people using to encode video for HTML5? The players I have looked at want .mp4, .ogg, and .webm. Media Encoder (At least the CS5 version) doesn't do the last 2. I tried the Miro encoder, but that has no controls, and has quality issues. I'm looking for a professional solution (hopefully not crazy expensive) for OSX.
Copy link to clipboard
Copied
I'm not doing HTML5 at the moment, myself. H.264 is the best quality you can get, and Firefox doesn't support it in HTML5. So I still do the Javascript player thing to get that superior H.264 quality in Firefox.
Copy link to clipboard
Copied
I agree with Jim on the H.264... I do video for the web professionally and though we've not yet begun integrating our video directly with HTML5, I can vouch for H.264 being the best codec to use... Media Encoder has some great presets for it, and I would bet that using one of the presets for Vimeo or YouTube would get you a good mp4 file that would play fine in an HTML5 player.
Copy link to clipboard
Copied
David: As I understand it, Firefox won't play video through a <video> HTML5 tag if it is H.264. Am I missing something?
Copy link to clipboard
Copied
heres some info re: html5 and video and various mobile devices and also browsers.. there's 2 different pastes ..first is from a doc file I have ..then theres a txt file....the info is about 9 months or a year old ...
plenty of links in articles to follow thru
=====
This is all done without JavaScript and requires only two video encodes, one Ogg file, and one MP4 file. Instructions on how to convert your videos to these formats are provided further down this article.
It’s compatible with HTML 4, HTML5 (valid markup), XHTML 1 and additionally also works when served as application/xhtml+xml.
For a full browser compatibility list, see the Video for Everybody Test Page.
Here follows the full source code. It’s very large because it’s fully commented.
You can easily compact this down (one such example follows afterwards).
To save time you could use the Video for Everybody generator by Jonathan Neal to generate the code snippet according to your options.
Do not miss the important notes below or you will be kicking yourself after wasting hours trying to get it to work.
<!-- first try HTML5 playback: if serving as XML, expand `controls` to `controls="controls"` and autoplay likewise -->
<!-- warning: playback does not work on iPad/iPhone if you include the poster attribute! fixed in iOS4.0 -->
<video width="640" height="360" controls>
<!-- MP4 must be first for iPad! -->
<source src="__VIDEO__.MP4" type="video/mp4" /><!-- WebKit video -->
<source src="__VIDEO__.OGV" type="video/ogg" /><!-- Firefox / Opera -->
<!-- fallback to Flash: -->
<object width="640" height="360" type="application/x-shockwave-flash" data="__FLASH__.SWF">
<!-- Firefox uses the `data` attribute above, IE/Safari uses the param below -->
<param name="movie" value="__FLASH__.SWF" />
<param name="flashvars" value="controlbar=over&image=__POSTER__.JPG&file=__VIDEO__.MP4" />
<!-- fallback image. note the title field below, put the title of the video there -->
<img src="__VIDEO__.JPG" width="640" height="360" alt="__TITLE__"
title="No video playback capabilities, please download the video below" />
</object>
</video>
<!-- you *must* offer a download link as they may be able to play the file locally. customise this bit all you want -->
<p> <strong>Download Video:</strong>
Closed Format: <a href="__VIDEO__.MP4">"MP4"</a>
Open Format: <a href="__VIDEO__.OGV">"Ogg"</a>
</p>
(If you would like your video to automatically start playing, check out the sample code on the test page.)
Here’s a compacted version as an example:
<video width="640" height="360" controls>
<source src="__VIDEO__.MP4" type="video/mp4" />
<source src="__VIDEO__.OGV" type="video/ogg" />
<object width="640" height="360" type="application/x-shockwave-flash" data="__FLASH__.SWF">
<param name="movie" value="__FLASH__.SWF" />
<param name="flashvars" value="controlbar=over&image=__POSTER__.JPG&file=__VIDEO__.MP4" />
<img src="__VIDEO__.JPG" width="640" height="360" alt="__TITLE__"
title="No video playback capabilities, please download the video below" />
</object>
</video>
<p> <strong>Download Video:</strong>
Closed Format: <a href="__VIDEO__.MP4">"MP4"</a>
Open Format: <a href="__VIDEO__.OGV">"Ogg"</a>
</p>
And one that auto plays: (notice the changes “autoplay
” and “autostart=true
”)
<video width="640" height="360" controls autoplay>
<source src="__VIDEO__.MP4" type="video/mp4" />
<source src="__VIDEO__.OGV" type="video/ogg" />
<object width="640" height="360" type="application/x-shockwave-flash" data="__FLASH__.SWF">
<param name="movie" value="__FLASH__.SWF" />
<param name="flashvars" value="autostart=true&controlbar=over&image=__POSTER__.JPG&file=__VIDEO__.MP4" />
<img src="__VIDEO__.JPG" width="640" height="360" alt="__TITLE__"
title="No video playback capabilities, please download the video below" />
</object>
</video>
<p> <strong>Download Video:</strong>
Closed Format: <a href="__VIDEO__.MP4">"MP4"</a>
Open Format: <a href="__VIDEO__.OGV">"Ogg"</a>
</p>
It’s advised you subscribe to the RSS to be kept informed of new releases in case you get caught out by new bugs introduced by vendors *cough*Apple*cough*. The version isn’t <1 for no reason.
alt
text). Not all browsers support the poster
attribute, it’s advisable to encode the poster image into the first frame of your video. 2.
AddType video/ogg .ogv
3.
AddType video/mp4 .mp4
AddType video/webm .webm
DO NOT INCLUDE THE poster
ATTRIBUTE (<video poster="…">
) FOR iOS 3.x SUPPORT. There is a major bug with iOS 3 that means that playback will not work on any HTML5 video tag that uses both the poster
attribute and <source>
elements. This was fixed in iOS 4.0, but of course for now there will still be a large number of OS 3 users. This bug does not affect use of the poster image in the flashvars
parameter, which you should retain
Android 2.3 (Gingerbread) now finally supports the controls
attribute, so that VfE can work, but this still leaves all previous Android versions in the lurch. Use MediaElement.js or VideoJS for better Android support.
SetEnvIfNoCase Request_URI \.(og[gv]|mp4|m4v|webm)$ no-gzip dont-vary
With thanks to Bas van Bergen for this tip
Please also note that Windows XP originally shipped with Flash v6, and H.264 playback in Flash requires v9 or 10. Depending on what Flash video player you use, this may cause problems if you intend to support users with out of date Flash versions
<source … />
” to “<source …></source>
”. This works, but will not validate as HTML5 Since VfE doesn’t come with any JavaScript the HTML5 video will use whatever native interface the browser provides. This is in the best interest of the user because it provides an interface best tailored to that device. For example, the iPhone always plays video fullscreen so that the edges of the video are not cut off in the browser and the user does not have to pan around to get it all in view. The iPad provides finger-friendly sized controls.
Different native video controls in Opera 10.5 and Google Chrome
Designers however don’t like the inconsistency and would like a unified set of controls. Both MediaElement.js and VideoJS use VfE and custom controls you can style how you please with CSS.
Full instructions are beyond the scope of this article, please refer to Mark Pilgrim’s Video on the Web article for an excellent introduction to video formats and encoding instructions.
If you would like to use a larger video than 640x480, you can use a QuickTime reference movie to auto-select between an iPhone compatible version and the full-size video. In QuickTime Pro use the ‘File » Export for Web…’ option to output a reference movie (you can also use Apple’s MakeRefMovie tool for finer control). You’ll have three files along these lines: “video.mov”, “video-desktop.mp4” (or m4v) and “video-iphone.mp4”. Now replace the two source
elements in the code with these three: (substituting the right file paths)
<source src="video.mov" type="video/mp4"></source>
<source src="video-desktop.mp4" type="video/mp4"></source>
<source src="video.ogv" type="video/ogg"></source>
What happens here is that the browser will play the QuickTime reference movie (Safari / iPhone / iPad) which will auto-select between the desktop and iPhone versions of the video automatically. If the MOV format isn’t supported by the browser (Chrome for example), we point to the same MPEG4 video that the QuickTime reference movie uses.
I made Video for Everybody because since I don’t have Flash installed I wanted to create a way websites could provide me access to their videos (currently needlessly trapped inside Flash) without having to lose viewers from older browsers. VfE is not a tool I would use myself (other videos on this site are HTML5/Ogg only) because of the threat that H.264 represents to freedom on the web. Websites that are already serving H.264 video to users using Flash have already made the conscious decision to buy into H.264. I am not making that decision for you with Video for Everybody.
Just be aware that if you decide to use H.264 video for commercial use then you will need to purchase a licence from the MPEG-LA. Be warned that ‘commercial use’ may also include the scenario where your website has advertisements, even though your use of video is unrelated to those adverts. If you are making any any money in any way from a page that also includes an H.264 video, then you should contact the MPEG-LA for help on licencing.
On the 27th of August 2010, the MPEG-LA announced (arguably in response to growing WebM support) that the terms of “free use” of H.264 Internet broadcast would not change in 2016. This does not change a thing.
This is similar to Nikon announcing that they will not charge you if you put your pictures up on Flickr, or HP promising that they will never charge you additionally if you photocopy something that you printed on a LaserJet.
Mike Shaver
On the 19th of May 2010 Google released the VP8 codec as open-source and royalty free with the full intent to drive broad adoption via industry backing and switching YouTube over to the new format in the long term. “WebM” is a rebranded Matroska container utilising VP8 video and Vorbis audio.
This represents major competition to H.264—Mozilla, Google and Opera have already added support into special builds of their browsers and even Microsoft have about-faced on their H.264-only policy and said that IE9 will support WebM—but only if the codec has been installed by the user. Obviously absent from any support is Apple, and this means that unfortunately codec-fragmentation will continue into the foreseeable future so that you will still need to provide more than one video encode.
Adding a WebM video to Video for Everybody is easy, just add it to the source list! It has to go below the MP4 video due to an iPad bug that ignores anything but the first source element, and ideally above the Ogg source so that browsers that play both Ogg and WebM choose the WebM video first. Here is an example source stack:
<source src="video.mp4" type="video/mp4" />
<source src="video.webm" type="video/webm" />
<source src="video.ogv" type="video/ogg" />
Note the new mime type, which you will have to add to your server.
At this extremely early stage for WebM I will not provide any help via e-mail on how to encode or use WebM video. If you don’t know how to use it already, it’s not for you—wait until support is added to your favourite tools and more information is readily available. I will update this article as the situation with WebM progresses.
================
mobile device video info
The options actually match those of the most recent iPod Video, which uses H.264 video, up to 1.5Mbps, 640 x 480 pixels, and 30 frames per second with low-complexity AAC audio up to 160 Kbps, 48kHz stereo audio. On the lower end, bandwidths up to 768Kbps, 320 x 240 pixels, and 30 frames per second are also used, known as Baseline Profile up to Level 1.3. Both options can be output with .m4v, .mp4, or .mov extensions.
iTunes. The simplest way is to use iTunes built-in converter. Apple makes it fairly simple to convert videos to play on the Apple TV or iPod, which are also conversions that can be used on the iPhone. Any video that can play in iTunes, then, can be converted to play on the iPhone, and local files can also be synced directly to the iPhone via iTunes sync conduit, making for a fairly easy process. Two downsides: first, iTunes uses a "lowest common denominator" approach, meaning that there are no customized options for encoding into H.264. Also, some users have reported a bug in the most recent version of iTunes that creates video files with no audio, so don’t toss your original video clips until you’ve had a chance to test out the new H.264-compressed video clips.
Handbrake. Handbrake is the next most-popular encoding tool for both Windows and Macintosh platforms, and it’s available in a command-line version for Linux. Handbrake does a lot more than just H.264 conversions, but for purposes of this article, Handbrake would be used to transcode an MPEG-2 transport stream or other non-H.264 formats and codecs into H.264 video files. Speed on the product is quite good, and it has the option of a single-profile conversion (like iTunes) or the ability to customize encoding or profiles and then save the tweaks for future encodings. Handbrake has made a name for itself in DVD-to-iPod conversion, so the extension of Handbrake to the iPhone is one that many users trust.
On any of the last three products, the H.264 files output from these products can be added to the iTunes library for uploading to the iPhone. For those choosing to put their iPhone-compliant videos on the web, it’s also helpful to choose hinted streaming to allow the videos to begin playing immediately rather than waiting for the entire cache to fill.
--------------
http://www.webmonkey.com/2010/05/embed-videos-in-your-web-pages-using-html5/
So, you want in on the fun? Do you want to use some HTML5 video tags on your site right now? No problem. Fasten your seat belts, as we’re about to take a tour of the wonderful world of HTML5 video.
Browser Support for HTML5
First, let’s deal with some very basic stuff, like where this will work and where it won’t. As you can see in the table below, only the latest versions of most browsers support native video playback using HTML5’s <video> tag.
HTML5 <video> support by browser: Fx 3.0 Fx 3.5 IE7 IE8 IE9 Safari 3 Safari 4 Chrome 3+ Opera 10.5
Since Firefox 3.0 and IE 7 & 8 lack any support for HTML5 video, you’ll have to come up with a fallback plan for serving video to those users. Depending on what you want to do you, could fallback first to Quicktime and then, failing that, to Flash. That’s the strategy used in Video for Everyone (note that as of v0.4, Video for everyone no longer falls back to QuickTime).
To keep things simple we’re just going to fall straight from HTML5 to Flash.
Formats, Codecs and Technicalities
The next thing you need to understand is what is actually happening when you load and play a video file in your web browser. You’re probably used to thinking of video as .mp4 or .mov files, but unfortunately it’s not that simple. The actual file formats are just containers. Think of them as a bit like a .zip file — they hold other stuff inside.
Each container holds at minimum one video track and, most likely, one audio track. When you watch a movie online, your video player (most likely Flash) decodes both the audio and video and sends the information to your screen and speakers.
Why does this matter? Well, because the process of decoding what’s inside the video container file varies. To know how to decode a movie, the player (which is your web browser in the case of HTML5 video) has to know which codec the movie was encoded with.
When it comes to web video there are two codecs to worry about: H.264 and Theora.
There’s a huge debate right now among web developers, browser makers and just about everyone else as to which codec is right for the web. We believe that a free, open codec without patent and licensing restrictions is the best solution for the web. Sadly, neither codec exactly fulfills that dream, so for now, let’s just skip the whole argument and be practical — we’re going to use both codecs.
Why? Well, have a look at the table below, which shows which codecs work where and you’ll quickly see that there is no one-size-fits-all-browsers solution. Only Google Chrome can play both H.264 and Theora.
Codec support by browser/platform: Firefox Opera Chrome Safari IE 9 iPhone Android
Ogg Theora
H.264
So, you may be thinking … if HTML5 video doesn’t work in IE7 or IE8 and it means I’m going to have to encode my videos twice, then why bother at all? Well, the best answer is simple: mobile users. If you want iPhone and Android users to be able to see your video, HTML5 is the only way to do it — Flash support is coming to Android sooner or later but for now HTML5 is the only option, and we all know Flash doesn’t run on the iPhone or the iPad.
The HTML5 Code
Here’s how to actually embed your videos. First, we encode video in both .ogv and .mp4 containers. Encoding video is beyond the scope of this article, so instead we suggest you check out Mark Pilgrim’s online book Dive Into HTML5, which has a whole chapter devoted to understanding video encoding. Pilgrim’s encoding suggestions use free software to get the job done, and in the end you’ll have two files — one .mp4 and one .ogv.
Now it’s time to unleash those movies in pure HTML glory. Here’s the code:
view source
print?
1 <video width="560" height="340" controls>
2 <source src="path/to/myvideo.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
3 <source src="path/to/myvideo.ogv" type='video/ogg; codecs="theora, vorbis"'>
4 </video>
Yes, that’s it. What we’ve done here is use the <video> tag to specify the dimensions of our video, and to denote that we want to use the browser’s default controls. Then, within the video tag, we’ve added two <source> elements which link to our video files.
The “type” attribute of the <source> tag helps the browser understand which file it should load. It’s a bit of an ugly chunk of code that needs to specify the container format, the video codec and the audio codec.
In this case we’ve assumed standard .ogv and baseline encoded H.264 video as per Pilgrim’s tutorial. See the WHATWG wiki for more information on which video types you can specify.
And there you have it — native web video, no plugins required.
Dealing With Everyone Else
What about IE7, IE8 and older versions of just about any other browser? Well, for those users, we’ll fall back on Flash. To do that, we just use an <embed> tag within our video tag:
view source
print?
1 <video width="560" height="340" controls>
2 <source src="path/to/myvideo.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
3 <source src="path/to/myvideo.ogv" type='video/ogg; codecs="theora, vorbis"'>
4 <object width="640" height="384" type="application/x-shockwave-flash"
5 data="path/to/swf/player.swf?image=placeholder.jpg&file=path/to/myvideo.mp4">
6 <param name="movie" value="path/to/swf/player.swf?image=placeholder.jpg&file=path/to/myvideo.mp4" />
7 </object>
8 </video>
Now any browser that doesn’t understand the HTML5 video tag will just continue on its way until it hits the object tag, which it should understand (note that the order, mp4 before ogv, is important for iPad support — Apple requires that mp4 be the first video file).
Of course for this to work you need a Flash video container. JW Player is one popular example, or you can roll your own using Adobe’s tools. Also remember that we still haven’t handled the case of an older version of Firefox with no Flash plugin installed (maybe your users are surfing your tubes with an outdated Linux machine). You can always add good old text-based links to the video files as a catch-all fix for anyone who can’t, for whatever reason, see either the HTML5 or Flash versions.
Conclusion
Embedding HTML5 video isn’t significantly more difficult than using Flash, especially if you’ve been using H.264 video files in your Flash player — which is exactly what YouTube has done with its HTML5 beta.
While we’re concerned about the licensing and patent requirements of H.264, it isn’t hard to notice that if you skip Theora and make all non-H.264 fall back to Flash, you’ve still saved yourself a considerable encoding headache. In fact, that’s probably the best practical argument against Mozilla and Opera’s refusal to support H.264.
If you’d like to use some of the more advanced aspects of HTML5 video, be sure to check the SublimeVideo player, which offers very nice JavaScript-powered set of custom controls. Also be sure to have a look at Video for Everybody, which makes for more complex code but handles just about every use case you could imagine. And there’s a handy Video for Everybody WordPress plugin as well.
------------------
http://camendesign.com/code/video_for_everybody
good luck
Copy link to clipboard
Copied
Jim: What are you referring to when you say "javascript player"? What do you use?
Copy link to clipboard
Copied
I use flowplayer.
Copy link to clipboard
Copied
That's a good question. Jonriber.
Copy link to clipboard
Copied
read above...
===========
While we’re concerned about the licensing and patent requirements of H.264, it isn’t hard to notice that if you skip Theora and make all non-H.264 fall back to Flash, you’ve still saved yourself a considerable encoding headache. In fact, that’s probably the best practical argument against Mozilla and Opera’s refusal to support H.264.
=============
info is about a year old though
Copy link to clipboard
Copied
Hi Jay,
Sorry to be late to the party, but this is exactly what I do for work everyday.
I am unfortunately using Final Cut to make my .mp4's, but once I have the file, I use firefogg.org from Mozilla to convert it into an .ogv file. Firefogg will also make a webm, so you can kill all the birds with one tool. If you use the Advanced Options, you can set things like resolution, keyframes and 2-pass encoding, which will make your .ogv look MUCH better.
Give it a shot, it's a really useful tool, especially for supporting video in HTML5!
jaymcdonald wrote:
What are people using to encode video for HTML5? The players I have looked at want .mp4, .ogg, and .webm. Media Encoder (At least the CS5 version) doesn't do the last 2. I tried the Miro encoder, but that has no controls, and has quality issues. I'm looking for a professional solution (hopefully not crazy expensive) for OSX.
Copy link to clipboard
Copied
Firefogg is great, thanks!