Never treat a manifest container as an audio codec or a direct play target
This commit is contained in:
@@ -26,6 +26,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
internal const TranscodeReason VideoReasons = TranscodeReason.VideoCodecNotSupported | VideoCodecReasons;
|
||||
internal const TranscodeReason DirectStreamReasons = AudioReasons | TranscodeReason.ContainerNotSupported | TranscodeReason.VideoCodecTagNotSupported;
|
||||
|
||||
private const string ManifestContainers = "hls,applehttp,dash";
|
||||
|
||||
private readonly ILogger _logger;
|
||||
private readonly ITranscoderSupport _transcoderSupport;
|
||||
private static readonly string[] _supportedHlsVideoCodecs = ["h264", "hevc", "vp9", "av1"];
|
||||
@@ -718,6 +720,14 @@ namespace MediaBrowser.Model.Dlna
|
||||
isEligibleForDirectPlay = false;
|
||||
}
|
||||
|
||||
// A manifest is not a byte stream, so it cannot be handed to the client as one. The variant
|
||||
// and segment URIs inside it are relative to the origin and do not resolve against the
|
||||
// Jellyfin url the client would fetch it from.
|
||||
if (ContainerHelper.ContainsContainer(ManifestContainers, item.Container))
|
||||
{
|
||||
isEligibleForDirectPlay = false;
|
||||
}
|
||||
|
||||
if (bitrateLimitExceeded)
|
||||
{
|
||||
transcodeReasons = TranscodeReason.ContainerBitrateExceedsLimit;
|
||||
|
||||
Reference in New Issue
Block a user