JW Player is the world's most popular embeddable media player.
JavaScript ActionScript CSS HTML
Latest commit 7c5fd01 Feb 18, 2017 @egreaves egreaves committed on GitHub Merge pull request #1833 from jwplayer/v7.10
Merge v7.10 into master

README.md

JW Player Logo

Join the chat at https://gitter.im/jwplayer/jwplayer

Plays everywhere, every time.

Live on over 2 million sites with 1.3 billion unique plays per month, JW Player is the solution for seamless video playback across browsers and media types. It empowers the developer to interact with video programmatically to create unique and awesome user experiences.

Official Documentation

A Simple Example

The example below will render a video player into the div with the player id, listens to an event, and makes a few calls using the API.

<html>
    <head>
        <script src='LINK_TO_YOUR_PLAYER'></script>
        <script>jwplayer.key='YOUR_KEY';</script>
    </head>
    <body>
        <div id="player">Loading the player...</div>
        <script>
            // Setup the player
            const player = jwplayer('player').setup({
                file: 'LINK_TO_YOUR_FILE.mp4'
             });

            // Listen to an event
            player.on('pause', (event) => {
                alert('Why did my user pause their video instead of watching it?');
            });

            // Call the API
            const bumpIt = () => {
                const vol = player.getVolume();
                player.setVolume(vol + 10);
            }
            bumpIt();
        </script>
    </body>
</html>

Check out an interactive example in this JSFiddle.

Contributing

We appreciate all contributions towards the player! Before submitting an issue or PR, please see our contributing docs here.

Building the Player

We use grunt and a few npm scripts to build the player, lint code, and run tests. Debug code is built to /bin-debug, while minified & uglified code is built to /bin-release. Code is built with webpack, linted with eslint and flow, and tested with karma and qunit.

Requirements:

  1. Node.js
  2. Java*

    * Optional, but required for building Flash. If not installed you must grunt with the --force flag.

Steps:

  1. Fork the project, clone your fork, and set up the remotes:

    # Clone your fork of the repo into the current directory
    git clone https://github.com/<your-username>/jwplayer
    # Navigate to the newly cloned directory
    cd jwplayer
    # Assign the original repo to a remote called "upstream"
    git remote add upstream https://github.com/jwplayer/jwplayer
    
  2. Install the dependencies:

    # Install grunt globally
    npm install -g grunt
    npm install
    # Optionally, install webpack-dev-server
    npm install -g webpack-dev-server
    
  3. Build the player:

    # Build once, Flash and JS
    grunt
    # Complete Watch - builds FLash and JS, lints, and tests on each change
    grunt serve
    # Quick JS Watch - build only. Requires webpack-dev-server to be installed globally
    webpack-dev-server --only debug -w --port 8888 --output-public-path /bin-debug/
    
  4. Test your code:

    # All browsers
    grunt test
    # Individual browsers - chrome, firefox, ie11, ie10, ie9
    grunt karma:{BROWSER} e.g. grunt karma:chrome
    
  5. Lint your code:

    npm run lint
    npm run flow
    

Software License

The use of this library is governed by a Creative Commons license. You can use, modify, copy, and distribute this edition as long as it’s for non-commercial use, you provide attribution, and share under a similar license. http://www.jwplayer.com/license/