A CodePen by xem. A HTML5 video player with custom controls - Cross-browser/cross-device notes:

- The video has no poster attribute in order to play properly on iOS3.
- The video's autoplay attribute is ignored by iOS. On iOS, The video can't even be launched with JavaScript until the user touches the screen.
- Android 2.2 needs a JavaScript play() to launch the video.
- The first video source must be a MP4 video in order to be recognized by iOS 3, and it mustn't have a type attribute in order to work on Android 2.2. MP4 is the only format working on iOS 3+. It also works on IE9+, Safari 3+, Chrome 5+ and Android 2.2+.
- Next source(s) should have a type attribute.
- The second video source is Ogg because it works on older Firefox (3.5+) and Opera (10.5+) than WebM. WebM could be used third but wouldn't be useful as a fallback for Ogg. It could also replace it as the second track.
- A flash fallback should be provided for older browsers.
- A text (or any HTML) fallback should be provided for older browsers without a recent Flash version.
- Firefox won't fallback to Flash or HTML if there's only a MP4 source. There's a workaround in that case: replace the video tag with the flash object into the DOM.