Fix Live TV direct play stability (#5229)

(cherry picked from commit ac89159455)
This commit is contained in:
tobster093 authored and Niels van Velzen committed 2025-12-23 10:53:24 +01:00
1 parent f56faa2ad0
commit 9a3022a590
3 files changed
+11 -2

No files matched your search

@@ -27,6 +27,7 @@ import org.jellyfin.playback.media3.session.media3SessionPlugin
import org.jellyfin.sdk.api.client.HttpClientOptions
import org.jellyfin.sdk.api.okhttp.OkHttpFactory
import org.koin.android.ext.koin.androidContext
import kotlin.time.Duration
import org.koin.core.scope.Scope
import org.koin.dsl.module
import kotlin.time.Duration.Companion.milliseconds
@@ -39,10 +40,12 @@ val playbackModule = module {
single { PlaybackLauncher(get(), get(), get(), get()) }
// OkHttp data source using OkHttpFactory from SDK
single<HttpDataSource.Factory> {
val okHttpFactory = get<OkHttpFactory>()
val httpClientOptions = get<HttpClientOptions>()
val httpClientOptions = get<HttpClientOptions>().copy(
// Disable request timeout for media playback as this causes issues with Live TV
requestTimeout = Duration.ZERO
)
OkHttpDataSource.Factory(okHttpFactory.createClient(httpClientOptions))
}
@@ -40,9 +40,11 @@ private fun createStreamInfo(
source.isRemote && source.path != null -> source.path
else -> api.videosApi.getVideoStreamUrl(
itemId = itemId,
container = container,
mediaSourceId = source.id,
static = true,
tag = source.eTag,
liveStreamId = source.liveStreamId,
)
}
} else if (options.enableDirectStream && source.supportsDirectStream) {
@@ -37,9 +37,11 @@ class JellyfinMediaStreamResolver(
conversionMethod = MediaConversionMethod.None,
url = api.videosApi.getVideoStreamUrl(
itemId = baseItem.id,
container = mediaInfo.mediaSource.container,
mediaSourceId = mediaInfo.mediaSource.id,
static = true,
tag = mediaInfo.mediaSource.eTag,
liveStreamId = mediaInfo.mediaSource.liveStreamId,
)
)
@@ -49,9 +51,11 @@ class JellyfinMediaStreamResolver(
conversionMethod = MediaConversionMethod.None,
url = api.audioApi.getAudioStreamUrl(
itemId = baseItem.id,
container = mediaInfo.mediaSource.container,
mediaSourceId = mediaInfo.mediaSource.id,
static = true,
tag = mediaInfo.mediaSource.eTag,
liveStreamId = mediaInfo.mediaSource.liveStreamId,
)
)