Simplified Player wrapper for MediaPlayer and ExoPlayer


CI status Download from Bintray Tests Coverage Apache 2.0 Licence

A simplified Android Player wrapper for MediaPlayer and ExoPlayer.


Some of the benefits are:

  • Unified playback interface and event listeners for ExoPlayer and MediaPlayer
  • MediaPlayer buffering
  • ExoPlayer local, streaming and provisioning WideVine Modular DRM
  • Maintains video Aspect Ratio by default
  • Player selection based on ContentType and DRM

Experimental Features, use with caution:

  • Support for TextureView

Adding to your project

To start using this library, add these lines to the build.gradle of your project:

repositories {

dependencies {
    implementation 'com.novoda:no-player:<latest-version>'

Simple usage

  1. Create a Player:

    Player player = new PlayerBuilder()
  2. Create the PlayerView:

      android:layout_gravity="center" />
  3. Attach to a PlayerView:

    PlayerView playerView = findViewById(;
  4. Play some content:

    player.getListeners().addPreparedListener(playerState ->;
    Uri uri = Uri.parse(mpdUrl);
    player.loadVideo(uri, ContentType.DASH);


CI status Download from Bintray

Snapshot builds from develop are automatically deployed to a repository that is not synced with JCenter. To consume a snapshot build add an additional maven repo as follows:

repositories {
    maven {
        url ''

You can find the latest snapshot version following this link.


We always welcome people to contribute new features or bug fixes, here is how.

If you have a problem, check the Issues Page first to see if we are already working on it.

Looking for community help? Browse the already asked Stack Overflow Questions or use the tag support-no-player when posting a new question.