feat: add RTMP support

This commit is contained in:
tunbmoon
2026-04-08 15:57:31 +08:00
parent db59a44e73
commit 88f9272834
3 changed files with 14 additions and 1 deletions
@@ -87,12 +87,22 @@ class Media3Player(private val context: Context) {
actualPlayingUrl = null
val currentSurface = surface
val isRtmp = url.startsWith("rtmp", ignoreCase = true)
exoPlayer?.apply {
stop()
clearMediaItems()
clearVideoSurface()
setMediaItem(createMediaItem(url))
if (isRtmp) {
val rtmpSource = androidx.media3.exoplayer.source.ProgressiveMediaSource.Factory(
androidx.media3.datasource.rtmp.RtmpDataSource.Factory()
).createMediaSource(androidx.media3.common.MediaItem.fromUri(url))
setMediaSource(rtmpSource)
} else {
setMediaItem(createMediaItem(url))
}
prepare()
if (currentSurface != null && currentSurface.isValid) {
@@ -6,6 +6,7 @@ import android.media.MediaCodecList
import androidx.media3.common.AudioAttributes
import androidx.media3.common.C
import androidx.media3.datasource.DefaultHttpDataSource
import androidx.media3.datasource.rtmp.RtmpDataSource
import androidx.media3.exoplayer.DefaultLoadControl
import androidx.media3.exoplayer.DefaultRenderersFactory
import androidx.media3.exoplayer.ExoPlayer
+2
View File
@@ -89,6 +89,7 @@ androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplaye
androidx-media3-exoplayer-hls = { group = "androidx.media3", name = "media3-exoplayer-hls", version.ref = "media3" }
androidx-media3-exoplayer-dash = { group = "androidx.media3", name = "media3-exoplayer-dash", version.ref = "media3" }
androidx-media3-exoplayer-rtsp = { group = "androidx.media3", name = "media3-exoplayer-rtsp", version.ref = "media3" }
androidx-media3-datasource-rtmp = { group = "androidx.media3", name = "media3-datasource-rtmp", version.ref = "media3" }
androidx-media3-ui = { group = "androidx.media3", name = "media3-ui", version.ref = "media3" }
androidx-media3-session = { group = "androidx.media3", name = "media3-session", version.ref = "media3" }
androidx-media3-exoplayer-ffmpeg = { group = "org.jellyfin.media3", name = "media3-ffmpeg-decoder", version = "1.9.0+1" }
@@ -132,6 +133,7 @@ media3 = [
"androidx-media3-exoplayer-hls",
"androidx-media3-exoplayer-dash",
"androidx-media3-exoplayer-rtsp",
"androidx-media3-datasource-rtmp",
"androidx-media3-exoplayer-ffmpeg",
"androidx-media3-ui",
"androidx-media3-session"