mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-08 18:54:26 -04:00
Merge pull request #4405 from nyanmisaka/aac-directstream
Fix AAC direct streaming
This commit is contained in:
commit
8fc16043c7
@ -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());
|
||||||
|
|
||||||
|
@ -2675,9 +2675,10 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
state.MediaSource = mediaSource;
|
state.MediaSource = mediaSource;
|
||||||
|
|
||||||
var request = state.BaseRequest;
|
var request = state.BaseRequest;
|
||||||
if (!string.IsNullOrWhiteSpace(request.AudioCodec))
|
var supportedAudioCodecs = state.SupportedAudioCodecs;
|
||||||
|
if (request != null && supportedAudioCodecs != null && supportedAudioCodecs.Length > 0)
|
||||||
{
|
{
|
||||||
var supportedAudioCodecsList = request.AudioCodec.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
var supportedAudioCodecsList = supportedAudioCodecs.ToList();
|
||||||
|
|
||||||
ShiftAudioCodecsIfNeeded(supportedAudioCodecsList, state.AudioStream);
|
ShiftAudioCodecsIfNeeded(supportedAudioCodecsList, state.AudioStream);
|
||||||
|
|
||||||
|
@ -287,6 +287,11 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
return BaseRequest.AudioChannels;
|
return BaseRequest.AudioChannels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (BaseRequest.TranscodingMaxAudioChannels.HasValue)
|
||||||
|
{
|
||||||
|
return BaseRequest.TranscodingMaxAudioChannels;
|
||||||
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(codec))
|
if (!string.IsNullOrEmpty(codec))
|
||||||
{
|
{
|
||||||
var value = BaseRequest.GetOption(codec, "audiochannels");
|
var value = BaseRequest.GetOption(codec, "audiochannels");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user