brianwernick
ExoMedia
Kotlin

An Android ExoPlayer wrapper to simplify Audio and Video implementations

Last updated Jun 29, 2026
2.2k
Stars
379
Forks
22
Issues
+2
Stars/day
Attention Score
93
Language breakdown
Kotlin 100.0%
โ–ธ Files click to expand
README

Maven Central

ExoMedia ============ ExoMedia is an audio/video playback library for Android built on top of the ExoPlayer with straightforward APIs and integrations. This library focuses on quick setup, handling common audio and video playback needs while also providing extensibility for more custom use cases.

ExoMedia vs ExoPlayer


The [ExoPlayer][ExoPlayer] is an advanced media player for Android that is highly customizable, however that comes at the cost of a more complex setup and configuration process. This customizability is great when it's needed however can be daunting when you need to play a simple audio or video file.

ExoMedia is a more high-level abstraction of media playback that abstracts some of the customizability provided by the [ExoPlayer][ExoPlayer] into simple functions and callbacks, keeping the required configuration to a minimum.

Use


The latest version can be found at [Maven Central][MavenCentral].

repositories {
  mavenCentral()
}

dependencies { // See MavenCentral or the tag at the beginning of the Readme for the latest version implementation 'com.devbrackets.android:exomedia:x.x.x' }

Quick Start


The ExoMedia VideoView can be added in your layout files like any other Android view.

<RelativeLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layoutwidth="matchparent"
  android:layoutheight="matchparent">

<com.devbrackets.android.exomedia.ui.widget.VideoView android:id="@+id/video_view" android:layoutwidth="matchparent" android:layoutheight="matchparent" /> </RelativeLayout>

While in your Activity or Fragment you treat it like a standard Android VideoView

private lateinit var videoView: VideoView

private fun setupVideoView() { // Make sure to use the correct VideoView import videoView = findViewById(R.id.video_view) as VideoView videoView.setOnPreparedListener(this)

// For now we just picked an arbitrary item to play videoView.setMedia(Uri.parse("https://www.devbrackets.com/media/samples/video/bigbuckbunny.mp4")) }

@Override fun onPrepared() { //Starts the video playback as soon as it is ready videoView.start() }

License


Copyright 2015-2026 ExoMedia Contributors

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Attribution


  • Uses Kotlin licensed under [Apache 2.0][Apache 2.0]
  • Uses AndroidX Media3 licensed under [Apache 2.0][Apache 2.0]
  • Uses ConstraintLayout licensed under [Apache 2.0][Apache 2.0]
  • Uses AndroidX AppCompat licensed under [Apache 2.0][Apache 2.0]
  • Uses [Material Design icons][Design Icons] licensed under [Apache 2.0][Apache 2.0]
[Apache 2.0]: http://www.apache.org/licenses/LICENSE-2.0 [CTS]: https://source.android.com/compatibility/cts/index.html [Design Icons]: https://github.com/google/material-design-icons [ExoPlayer]: https://github.com/androidx/media [MavenCentral]: https://search.maven.org/artifact/com.devbrackets.android/exomedia

ยฉ 2026 GitRepoTrend ยท brianwernick/ExoMedia ยท Updated daily from GitHub