Simplified Player wrapper for MediaPlayer and ExoPlayer

README.md

noplayer

CI status Download from Bintray Tests Coverage Apache 2.0 Licence

A simplified Android Player wrapper for MediaPlayer and ExoPlayer.

Description

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 {
    jcenter()
}

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

Simple usage

  1. Create a Player:

    Player player = new PlayerBuilder()
      .withPriority(PlayerType.EXO_PLAYER)
      .withWidevineModularStreamingDrm(drmHandler)
      .build(this);
  2. Create the PlayerView:

    <com.novoda.noplayer.NoPlayerView
      android:id="@+id/player_view"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center" />
  3. Attach to a PlayerView:

    PlayerView playerView = findViewById(R.id.player_view);
    player.attach(playerView);
  4. Play some content:

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

Snapshots

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 'https://novoda.bintray.com/snapshots'
    }
}

You can find the latest snapshot version following this link.

Contributing

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.