mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-04 03:27:21 -05: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