diff --git a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs
index d641f521b9..9d38167ac6 100644
--- a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs
+++ b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs
@@ -141,6 +141,19 @@ public class MediaSegmentManager : IMediaSegmentManager
///
public async Task> GetSegmentsAsync(Guid itemId, IEnumerable? typeFilter)
{
+ var baseItem = _libraryManager.GetItemById(itemId);
+
+ if (baseItem is null)
+ {
+ _logger.LogError("Tried to request segments for an invalid item");
+ return [];
+ }
+
+ var libraryOptions = _libraryManager.GetLibraryOptions(baseItem);
+ var providers = _segmentProviders
+ .Where(e => !libraryOptions.DisabledMediaSegmentProviders.Contains(GetProviderId(e.Name)))
+ .ToArray();
+
using var db = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false);
var query = db.MediaSegments
@@ -151,6 +164,9 @@ public class MediaSegmentManager : IMediaSegmentManager
query = query.Where(e => typeFilter.Contains(e.Type));
}
+ var providerIds = providers.Select(f => GetProviderId(f.Name)).ToArray();
+ query = query.Where(e => providerIds.Contains(e.SegmentProviderId));
+
return query
.OrderBy(e => e.StartTicks)
.AsNoTracking()