fixed universal

This commit is contained in:
2026-02-02 20:16:02 -05:00
parent bb2bda1379
commit 9fb86d3839

View File

@@ -867,12 +867,34 @@ public class JellyfinController : ControllerBase
} }
/// <summary> /// <summary>
/// Universal audio endpoint that redirects to the stream endpoint. /// Universal audio endpoint - handles transcoding, format negotiation, and adaptive streaming.
/// This is the primary endpoint used by Jellyfin Web and most clients.
/// </summary> /// </summary>
[HttpGet("Audio/{itemId}/universal")] [HttpGet("Audio/{itemId}/universal")]
public Task<IActionResult> UniversalAudio(string itemId) [HttpHead("Audio/{itemId}/universal")]
public async Task<IActionResult> UniversalAudio(string itemId)
{ {
return StreamAudio(itemId); if (string.IsNullOrWhiteSpace(itemId))
{
return BadRequest(new { error = "Missing item ID" });
}
var (isExternal, provider, externalId) = _localLibraryService.ParseSongId(itemId);
if (!isExternal)
{
// For local content, proxy the universal endpoint with all query parameters
var fullPath = $"Audio/{itemId}/universal";
if (Request.QueryString.HasValue)
{
fullPath = $"{fullPath}{Request.QueryString.Value}";
}
return await ProxyJellyfinStream(fullPath, itemId);
}
// For external content, use simple streaming (no transcoding support yet)
return await StreamExternalContent(provider!, externalId!);
} }
#endregion #endregion