One file. Any browser. Same UI.
- Author: John Dyer http://j.hn/
- Website: http://mediaelementjs.com/
- License: MIT
- Meaning: Use everywhere, keep copyright, it'd be swell if you'd link back here.
- Thanks: my employer, Dallas Theological Seminary
- Contributors: mikesten, sylvinus, mattfarina, romaninsh, fmalk, jeffrafter, sompylasar, andyfowler, RobRoy, jakearchibald, seanhellwig, CJ-Jackson, kaichen, gselva, erktime, bradleyboy, kristerkari, rmhall, tantalic, madesign, aschempp, gavinlynch, Birol2010, tons of others (see pulls)
MediaElementPlayer: HTML5 <video>
and <audio>
player
A complete HTML/CSS audio/video player built on top MediaElement.js
and jQuery
. Many great HTML5 players have a completely separate Flash UI in fallback mode, but MediaElementPlayer.js uses the same HTML/CSS for all players.
Changes available at Change Log
<script src="jquery.js"></script>
<script src="mediaelement-and-player.min.js"></script>
<link rel="stylesheet" href="mediaelementplayer.css" />
If your users have JavaScript and/or Flash, the easiest route for all browsers and mobile devices is to use a single MP4 or MP3 file.
<video src="myvideo.mp4" width="320" height="240"></video>
<audio src="myaudio.mp3"></audio>
This includes multiple codecs for various browsers (H.264 for IE9+, Safari, and Chrome, WebM for Firefox 4 and Opera, Ogg for Firefox 3).
<video width="320" height="240" poster="poster.jpg" controls="controls" preload="none">
<source type="video/mp4" src="myvideo.mp4" />
<source type="video/webm" src="myvideo.webm" />
<source type="video/ogg" src="myvideo.ogv" />
</video>
In very rare cases, you might have a non-HTML5 browser with Flash turned on and JavaScript turned off. In that specific case, you can also include the Flash <object>
code.
<video width="320" height="240" poster="poster.jpg" controls="controls" preload="none">
<source type="video/mp4" src="myvideo.mp4" />
<source type="video/webm" src="myvideo.webm" />
<source type="video/ogg" src="myvideo.ogv" />
<object width="320" height="240" type="application/x-shockwave-flash" data="flashmediaelement.swf">
<param name="movie" value="flashmediaelement.swf" />
<param name="flashvars" value="controls=true&poster=myvideo.jpg&file=myvideo.mp4" />
<img src="myvideo.jpg" width="320" height="240" title="No video playback capabilities" />
</object>
</video>
You can avoid running any startup scripts by added class="mejs-player"
to the <video>
or <audio>
tag. Options can be added using the data-mejsoptions
attribute
<video src="myvideo.mp4" width="320" height="240"
class="mejs-player"
data-mejsoptions='{"alwaysShowControls": true}'></video>
<script>
var player = new MediaElementPlayer('#player', {success: function(mediaElement, originalNode) {
// do things
}});
</script>
<script>
$('video').mediaelementplayer({success: function(mediaElement, originalNode) {
// do things
}});
</script>
MediaElement.js: HTML5 <video>
and <audio>
shim
MediaElement.js
is a set of custom Flash and Silverlight plugins that mimic the HTML5 MediaElement API for browsers that don't support HTML5 or don't support the media codecs you're using.
Instead of using Flash as a fallback, Flash is used to make the browser seem HTML5 compliant and enable codecs like H.264 (via Flash) and even WMV (via Silverlight) on all browsers.
<script src="mediaelement.js"></script>
<video src="myvideo.mp4" width="320" height="240"></video>
<script>
var v = document.getElementsByTagName("video")[0];
new MediaElement(v, {success: function(media) {
media.play();
}});
</script>
You can use this as a standalone library if you wish, or just stick with the full MediaElementPlayer.
When developing MediaElement, make changes to the files in the /src/
directory (not /build/
) and test the changes with /test/test.html
.
To compile the changes
- Install
node.js
withnpm
https://nodejs.org/ - At the command prompt type
npm install
which will download all the necessary tools - Type
grunt
to build MediaElement.js - To compile the Flash swf, you'll need to install Flex 4.6. See instructions in Gruntfile.js for details.