|
|
@ -88,16 +88,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
/// <response code="302">Redirected to remote audio stream.</response>
|
|
|
|
/// <response code="302">Redirected to remote audio stream.</response>
|
|
|
|
/// <returns>A <see cref="Task"/> containing the audio file.</returns>
|
|
|
|
/// <returns>A <see cref="Task"/> containing the audio file.</returns>
|
|
|
|
[HttpGet("Audio/{itemId}/universal")]
|
|
|
|
[HttpGet("Audio/{itemId}/universal")]
|
|
|
|
[HttpGet("Audio/{itemId}/universal.{container}", Name = "GetUniversalAudioStream_2")]
|
|
|
|
|
|
|
|
[HttpHead("Audio/{itemId}/universal", Name = "HeadUniversalAudioStream")]
|
|
|
|
[HttpHead("Audio/{itemId}/universal", Name = "HeadUniversalAudioStream")]
|
|
|
|
[HttpHead("Audio/{itemId}/universal.{container}", Name = "HeadUniversalAudioStream_2")]
|
|
|
|
|
|
|
|
[Authorize(Policy = Policies.DefaultAuthorization)]
|
|
|
|
[Authorize(Policy = Policies.DefaultAuthorization)]
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
[ProducesResponseType(StatusCodes.Status302Found)]
|
|
|
|
[ProducesResponseType(StatusCodes.Status302Found)]
|
|
|
|
[ProducesAudioFile]
|
|
|
|
[ProducesAudioFile]
|
|
|
|
public async Task<ActionResult> GetUniversalAudioStream(
|
|
|
|
public async Task<ActionResult> GetUniversalAudioStream(
|
|
|
|
[FromRoute, Required] Guid itemId,
|
|
|
|
[FromRoute, Required] Guid itemId,
|
|
|
|
[FromRoute] string? container,
|
|
|
|
[FromQuery] string? container,
|
|
|
|
[FromQuery] string? mediaSourceId,
|
|
|
|
[FromQuery] string? mediaSourceId,
|
|
|
|
[FromQuery] string? deviceId,
|
|
|
|
[FromQuery] string? deviceId,
|
|
|
|
[FromQuery] Guid? userId,
|
|
|
|
[FromQuery] Guid? userId,
|
|
|
@ -276,7 +274,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var cont in containers)
|
|
|
|
foreach (var cont in containers)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var parts = RequestHelpers.Split(cont, ',', true);
|
|
|
|
var parts = RequestHelpers.Split(cont, '|', true);
|
|
|
|
|
|
|
|
|
|
|
|
var audioCodecs = parts.Length == 1 ? null : string.Join(",", parts.Skip(1).ToArray());
|
|
|
|
var audioCodecs = parts.Length == 1 ? null : string.Join(",", parts.Skip(1).ToArray());
|
|
|
|
|
|
|
|
|
|
|
|