Allow clients to send audio container override for HLS

This will improve flexibility due to overcome the complex compatibility situation of HLS

Signed-off-by: gnattu <gnattuoc@me.com>
pull/11399/head
gnattu 1 month ago
parent 52910168d8
commit 6b9b392b95

@ -187,7 +187,8 @@ public class UniversalAudioController : BaseJellyfinApiController
var supportedHlsContainers = new[] { "ts", "mp4" };
// fallback to mpegts if device reports some weird value unsupported by hls
var segmentContainer = Array.Exists(supportedHlsContainers, element => element == transcodingContainer) ? transcodingContainer : "ts";
var requestedSegmentContainer = Array.Exists(supportedHlsContainers, element => element == transcodingContainer) ? transcodingContainer : "ts";
var segmentContainer = Array.Exists(supportedHlsContainers, element => element == mediaSource.TranscodingContainer) ? mediaSource.TranscodingContainer : requestedSegmentContainer;
var dynamicHlsRequestDto = new HlsAudioRequestDto
{
Id = itemId,

@ -127,6 +127,10 @@ namespace MediaBrowser.Model.Dlna
if (directPlayMethod is PlayMethod.DirectStream)
{
var remuxContainer = item.TranscodingContainer ?? "ts";
var supportedHlsContainers = new[] { "ts", "mp4" };
// If the container specified for the profile is an HLS supported container, use that container instead, overriding the preference
// The client should be responsible to ensure this container is compatible
remuxContainer = Array.Exists(supportedHlsContainers, element => element == directPlayInfo.Profile?.Container) ? directPlayInfo.Profile?.Container : remuxContainer;
bool codeIsSupported;
if (item.TranscodingSubProtocol == MediaStreamProtocol.hls)
{
@ -152,6 +156,7 @@ namespace MediaBrowser.Model.Dlna
playlistItem.Container = remuxContainer;
playlistItem.TranscodeReasons = transcodeReasons;
playlistItem.SubProtocol = item.TranscodingSubProtocol;
item.TranscodingContainer = remuxContainer;
return playlistItem;
}

Loading…
Cancel
Save