The definitive source of the best
JavaScript libraries, frameworks, and plugins.

  • ×


    HTML5 <audio> or <video> player with Flash and Silverlight shims that mimics the HTML5 MediaElement API, enabling a consistent UI in all browsers.
    Filed under 

    • 🔾83%Overall
    • 4,511
    • 5 hours
    • 🕩1052
    • 👥11


    One file. Any browser. Same UI.

    GitHub Version Build Status Coverage Status MIT License CDNJS

    Table of Contents


    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.

    MediaElement.js is a set of custom Flash 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) on all browsers.

    In general, MediaElement.js supports IE9+, MS Edge, Chrome, Firefox, Safari, iOS 8+ and Android 4.0+.

    * IMPORTANT: Migrating from 2.x to 3.x version

    In order to successfully install 3.x in an existing setup, you must consider the following guidelines:

    1. If your installation relies on the legacy player classes (i.e., mejs-player, mejs-container, etc.), you must set up the proper namespace. In 2.x, the default namespace is mejs- but now is mejs__. In order to set up a new namespace (or the legacy one), use the classPrefix configuration, and make sure you use the mediaelementplayer-legacy stylesheet provided in the /build/ folder.

    2. You must set up now the path for the Flash shims if they are not in the same folder as the JS files. To do this, set the path via the pluginPath configuration. In the same topic, if you need to support browsers with Javascript disabled, you must reference the correct Flash shim, since in 2.x there was only a single Flash shim and in 3.x it was split to target specific media types. Check the Browsers with JavaScript disabled section for more details.

    3. If you want to use Flash shims from a CDN, do the change related to pluginPath setting the CDN's URL, and also setting shimScriptAccess configuration as always.

    4. If you need to force the Flash shim, the way to do it in 3.x version is to use the renderers configuration and list them in an array.

    5. pluginType was removed to favor rendererName. If you rely on that element, just create conditionals based on the renderer ID (all listed here). For example:

    $('video, audio').mediaelementplayer({
            // Configuration
            success: function(media) {
                    var isNative = media.rendererName.match(/html5|native/);
                    var isYoutube = media.rendererName.match(/youtube/);
                    // etc.

    It is strongly recommended to read the documentation to get the most out of this package. Visit here to start.

    Installation and Usage

    The full documentation on how to install MediaElement.js is available at Installation.

    A brief guide on how to create and use instances of MediaElement available at Usage.

    Additional features can be found at

    API and Configuration

    MediaElement.js has many options that you can take advantage from. Visit API and Configuration for more details.

    Guidelines for Contributors

    If you want to contribute to improve this package, please read Guidelines.

    Change Log

    Changes available at Change Log

    TODO list

    IMPORTANT: Before posting an issue, it is strongly encouraged to read the whole documentation since it covers the majority of scenarios exposed in prior issues.

    New features and pending bugs can be found at TODO list.

    Show All