From 48d07f74a0412dfa40bf777ebf622be5bf4bd002 Mon Sep 17 00:00:00 2001 From: Garret Wyman Date: Sun, 23 Aug 2026 21:16:32 -0400 Subject: [PATCH] Fixing livetv playbackinfo media source id --- .../mobile/player/source/MediaSourceResolver.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/jellyfin/mobile/player/source/MediaSourceResolver.kt b/app/src/main/java/org/jellyfin/mobile/player/source/MediaSourceResolver.kt index 4e78b700..90e5ba3d 100644 --- a/app/src/main/java/org/jellyfin/mobile/player/source/MediaSourceResolver.kt +++ b/app/src/main/java/org/jellyfin/mobile/player/source/MediaSourceResolver.kt @@ -42,10 +42,14 @@ class MediaSourceResolver(private val apiClient: ApiClient) { mediaInfoApi.getPostedPlaybackInfo( itemId = itemId, data = PlaybackInfoDto( - // We need to remove the dashes so that the server can find the correct media source. - // And if we didn't pass the mediaSourceId, our stream indices would silently get ignored. + // The server filters media sources by this id and returns none when it matches + // nothing. For most items the media source id equals the item id, but for Live TV + // it is the tuner's stream id, so only substitute the item id when stream indices + // are actually requested - otherwise the response would come back empty. // https://github.com/jellyfin/jellyfin/blob/9a35fd673203cfaf0098138b2768750f4818b3ab/Jellyfin.Api/Helpers/MediaInfoHelper.cs#L196-L201 - mediaSourceId = mediaSourceId ?: itemId.toString().replace("-", ""), + mediaSourceId = mediaSourceId ?: itemId.toString().replace("-", "").takeIf { + audioStreamIndex != null || subtitleStreamIndex != null + }, deviceProfile = deviceProfile, maxStreamingBitrate = maxStreamingBitrate, startTimeTicks = startTime?.inWholeTicks,