https://github.com/khubaibkhan4/mediaplayer-kmp
MediaPlayer-KMP is a Kotlin Multiplatform (KMP) library that allows you to display and play YouTube videos across Android, iOS, Web, and Desktop platforms using JetBrains Compose Multiplatform. It provides a unified API for video playback that seamlessly integrates into Kotlin's multiplatform ecosystem.
https://github.com/khubaibkhan4/mediaplayer-kmp
android-application compose-multiplatform-library kmp-library kotlin-multiplatform kotlin-multiplatform-library kotlin-multiplatform-mobile media-player media-player-kmp
Last synced: 19 days ago
JSON representation
MediaPlayer-KMP is a Kotlin Multiplatform (KMP) library that allows you to display and play YouTube videos across Android, iOS, Web, and Desktop platforms using JetBrains Compose Multiplatform. It provides a unified API for video playback that seamlessly integrates into Kotlin's multiplatform ecosystem.
- Host: GitHub
- URL: https://github.com/khubaibkhan4/mediaplayer-kmp
- Owner: KhubaibKhan4
- License: gpl-2.0
- Created: 2024-07-06T06:38:38.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2025-03-03T16:44:10.000Z (about 2 months ago)
- Last Synced: 2025-03-29T00:04:45.159Z (26 days ago)
- Topics: android-application, compose-multiplatform-library, kmp-library, kotlin-multiplatform, kotlin-multiplatform-library, kotlin-multiplatform-mobile, media-player, media-player-kmp
- Language: Kotlin
- Homepage:
- Size: 8.35 MB
- Stars: 190
- Watchers: 5
- Forks: 14
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# MediaPlayer-KMP
[](https://search.maven.org/artifact/io.github.khubaibkhan4/mediaplayer-kmp)









## Overview
MediaPlayer-KMP is a Kotlin Multiplatform (KMP) library that allows you to display and play YouTube
videos across Android, iOS, Web, and Desktop platforms using JetBrains Compose Multiplatform. It
provides a unified API for video playback that seamlessly integrates into Kotlin's multiplatform
ecosystem.## Features
- **Platform Agnostic:** Supports Android, iOS, Web, and Desktop platforms through Kotlin
Multiplatform.
- **Compose Multiplatform Integration:** Seamlessly integrates with JetBrains Compose Multiplatform
UI framework.
- **YouTube Video Playback:** Easily load and play YouTube videos with minimal setup.
- **Audio Player Playback:** Easily load and play Audios with minimal setup.
- **Event Handling:** Provides callbacks and event listeners for video playback actions and events.
- **Streaming Support:** Provides Streaming Support For the Video and Audio Links.
- **AutoPlay:** AutoPlayer Support Implementation.
- **Auth Token:** Authentication Token Implementation.
- **ReelsView Support:** Reels View Support Implementation.## Future Plans
- **Desktop Playback Support**.
- **Audio player Customisation Support**.
- **Video and Audio picker for Android, iOS, Web and Desktop.**
- **Local Content Support.**
- **Playback Support.**## Installation
You can include MediaPlayer-KMP in your project by adding the following dependency:
**Version Catelog**
```
[versions]
mediaPlayerKMP = "2.0.9"[libraries]
alert-kmp = { module = "io.github.khubaibkhan4:mediaplayer-kmp", version.ref = "mediaPlayerKMP" }```
```groovy
implementation("io.github.khubaibkhan4:mediaplayer-kmp:2.0.9")
```## Usage
### YouTube Video Player
For the YouTube Player, you just need to provide the youtube video link. It will automatically
detect it & will launch the YouTube Player.```groovy
import io.github.khubaibkhan4.mediaplayer.VideoPlayerfun main() {
VideoPlayer(modifier = Modifier.fillMaxWidth().height(340.dp),
url = "https://www.youtube.com/watch?v=AD2nEllUMJw", // Automatically Detect the URL, Wether to Play YouTube Video or .mp4 e.g
showControls: Boolean = true,
)
}
```### Video Player
For the YouTube Player, you just need to provide the youtube video link. It will automatically
detect it & will launch the YouTube Player. It almost supports all the video extensions.```groovy
import io.github.khubaibkhan4.mediaplayer.VideoPlayerfun main() {
VideoPlayer(modifier = Modifier.fillMaxWidth().height(340.dp),
url = "https://freetestdata.com/wp-content/uploads/2022/02/Free_Test_Data_1MB_MP4.mp4", // Automatically Detect the URL, Wether to Play YouTube Video or .mp4 e.g
showControls: Boolean = true,
)
}
```
### Play Local FileTo Play Local files, you just need to provide the file path.
```groovy
import io.github.khubaibkhan4.mediaplayer.VideoPlayerfun main() {
VideoPlayerScreen(
url = filePath,
autoPlay = false,
onInteraction = {},
showControls = true
)
}
```## Audio Player Support
Audio Player Support is Implemented. It supports `mp3` `wav` `aac` `ogg` `m4a`. It Supports Play
Back, Volume Up, Down and Stability as well.```groovy
import io.github.khubaibkhan4.mediaplayer.VideoPlayerfun main() {
MediaPlayer(
modifier = Modifier.fillMaxWidth(),
url = "https://commondatastorage.googleapis.com/codeskulptor-demos/DDR_assets/Kangaroo_MusiQue_-_The_Neverwritten_Role_Playing_Game.mp3",
startTime = Color.Black,
endTime = Color.Black,
volumeIconColor = Color.Black,
playIconColor = Color.Blue,
sliderTrackColor = Color.LightGray,
sliderIndicatorColor = Color.Blue,
showControls: Boolean = true,
)
}
```### Authentication Token Support
Providing the Auth Tokens are pretty simple. You just need to add the headers. You can add the
headers with key and value pairs.```groovy
MediaPlayer(
modifier = Modifier.fillMaxSize(),
url = "https://example.com/protected-video.mp4",
headers = mapOf(
"Authorization" to "Bearer your_token",
"Custom-Header" to "YourValue"
),
startTime = Color.Red,
endTime = Color.Blue,
autoPlay = true,
volumeIconColor = Color.Green,
playIconColor = Color.Yellow,
sliderTrackColor = Color.Gray,
sliderIndicatorColor = Color.Magenta,
showControls: Boolean = true,
)```
## Reels View Support
```groovy
@Composable
fun MainScreen() {
val videoUrls = listOf(
"https://www.example.com/video1.mp4",
"https://www.example.com/video2.mp4",
"https://www.example.com/video3.mp4"
)
ReelsView(
videoUrls = videoUrls,
pagerType = PagerType.Vertical, // Choose PagerType.Vertical or PagerType.Horizontal
modifier = Modifier.fillMaxSize(),
autoPlay = true, // Enable auto-play for videos
showControls: Boolean = true,
onInteraction = { page, url ->
println("User interacted with page $page, video URL: $url")
}
)
}```
## Embed Content from Url:
```
val viewer = HtmlContentViewerFactory().createHtmlContentViewer()
val htmlEmbedFeature = HtmlEmbedFeature(viewer)htmlEmbedFeature.embedHtml(
url = "https://github.com/KhubaibKhan4/MediaPlayer-KMP/",
options = EmbedOptions(
customCss = "body { background-color: #f0f0f0; }",
onPageLoaded = { println("Page loaded successfully!") },
onError = { error -> println("Error loading page: $error") }
)
)HtmlContentViewerView(
viewer = viewer,
modifier = Modifier
.fillMaxSize()
)```
## 🤝 Connect with Me
Let's chat about potential projects, job opportunities, or any other collaboration! Feel free to
connect with me through the following channels:[](https://www.linkedin.com/in/khubaibkhandev)
[](https://twitter.com/codespacepro)
[](mailto:[email protected])## 💰 You can help me by Donating
[](https://buymeacoffee.com/khubaibkhan) [](https://paypal.me/18.bscs) [](https://patreon.com/MuhammadKhubaibImtiaz) [](https://ko-fi.com/muhammadkhubaibimtiaz)
## Screenshots
|  |  |  |
|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|
 | |  |
|---------------------------------------------------------------------------------------------------------------------------------------|
|  |
|  |
|  |## Embedded Content Support
| Mobile | Desktop |
|---------|---------|
|  |  |
## Demo
https://github.com/KhubaibKhan4/MediaPlayer-KMP/assets/98816544/657ad29d-5129-4f78-af56-ad354ba0935d
## Desktop Demo
https://github.com/KhubaibKhan4/MediaPlayer-KMP/assets/98816544/efd68685-2f41-4445-ad76-c183869ab93a
## Star History
**Stargazers**
[](https://github.com/KhubaibKhan4/YMediaPlayer-KMP/stargazers)
**Forkers**
[](https://github.com/KhubaibKhan4/MediaPlayer-KMP/network/members)
## Contribution Guidelines
We welcome contributions to the MediaPlayer-KMP Library Project! To contribute, please follow these
guidelines:- **Reporting Bugs**: If you encounter a bug, please open an issue and provide detailed information
about the bug, including steps to reproduce it.
- **Suggesting Features**: We encourage you to suggest new features or improvements by opening an
issue and describing your idea.
- **Submitting Pull Requests**: If you'd like to contribute code, please fork the repository, create
a new branch for your changes, and submit a pull request with a clear description of the changes.## Support Us:
- We need your support for doing more open source contributions.
## Code of Conduct
We expect all contributors and users of the Alert-KMP Library Project to adhere to our code of
conduct. Please review the [Code of Conduct](CODE_OF_CONDUCT.md) for details on expected behavior
and reporting procedures.