Enhanced Video Player for Android built on top of Exoplayer compliant with Android Jetpack Compose
- Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- Add the dependency
dependencies {
implementation 'com.github.profusion:android-enhanced-video-player:Tag'
}
Exoplayer supports the three main adaptive streaming algorithms: HLS, DASH and MSS. However, this project does not add the modules responsible for that in the library module so we can lower the size of the distributed package.
Any apps that import EnhancedVideoPlayer
can still play URIs from adaptive
streaming algorithms. To do that, one can import the necessary module's on the
app's build.gradle
as described below.
Add the following module to the app's build.gradle
implementation "androidx.media3:media3-exoplayer-hls:$mediaVersion"
When creating the MediaItem
, simply pass the HLS URI
EnhancedVideoPlayer(
mediaItem = MediaItem.fromUri(
"https://demo-streaming.gcdn.co/videos/676_YJHUNNocCsrjiCDx/master.m3u8"
)
)
Add the following module to the app's build.gradle
implementation "androidx.media3:media3-exoplayer-dash:$mediaVersion"
When creating the MediaItem
you can simply pass the URI if it ends with .mpd
or you can
pass MimeTypes.APPLICATION_MPD
to setMimeType
of MediaItem.Builder
val mediaItem = MediaItem.Builder()
.setMimeType(MimeTypes.APPLICATION_MPD)
.setUri(SOME_URI)
.build()
EnhancedVideoPlayer(mediaItem = mediaItem)
Add the following module to the app's build.gradle
implementation "androidx.media3:media3-exoplayer-smoothstreaming:$mediaVersion"
When creating the MediaItem
you can simply pass the URI if it ends with .ism/Manifest
or
you can pass MimeTypes.APPLICATION_SS
to setMimeType
of MediaItem.Builder
val mediaItem = MediaItem.Builder()
.setMimeType(MimeTypes.APPLICATION_SS)
.setUri(SOME_URI)
.build()
EnhancedVideoPlayer(mediaItem = mediaItem)