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
bufferingExoPlayer
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
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>'
}
From no-player 4.5.0 this is also needed in the android section of your build.gradle
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
-
Create a
Player
:Player player = new PlayerBuilder() .withPriority(PlayerType.EXO_PLAYER) .withWidevineModularStreamingDrm(drmHandler) .build(this);
-
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" />
-
Attach to a
PlayerView
:PlayerView playerView = findViewById(R.id.player_view); player.attach(playerView);
-
Play some content:
player.getListeners().addPreparedListener(playerState -> player.play()); Uri uri = Uri.parse(mpdUrl); player.loadVideo(uri, ContentType.DASH);
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.
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.