I’ve just done some experimentation with this, and from what I can tell you need three things:
- You must not use the type attribute when calling the video.
- You must manually call video.play()
- The video must be encoded to some quite strict parameters; using the iPhone setting on Handbrake with the ‘Web Optimized’ button checked usually does the trick.
Have a look at the demo on this page: http://broken-links.com/tests/video/
This works, AFAIK, in all video-enabled desktop browsers, iPhone and Android.
Here’s the markup:
<video id="video" autobuffer height="240" width="360">
<source src="https://stackoverflow.com/questions/1711078/BigBuck.m4v">
<source src="BigBuck.webm" type="video/webm">
<source src="BigBuck.theora.ogv" type="video/ogg">
</video>
And I have this in the JS:
var video = document.getElementById('video');
video.addEventListener('click',function(){
video.play();
},false);
I tested this on a Samsung Galaxy S and it works fine.