|
@@ -46,6 +46,7 @@ public class DynamicHlsController : BaseJellyfinApiController
|
|
|
|
|
|
private readonly Version _minFFmpegFlacInMp4 = new Version(6, 0);
|
|
|
private readonly Version _minFFmpegX265BframeInFmp4 = new Version(7, 0, 1);
|
|
|
+ private readonly Version _minFFmpegHlsSegmentOptions = new Version(5, 0);
|
|
|
|
|
|
private readonly ILibraryManager _libraryManager;
|
|
|
private readonly IUserManager _userManager;
|
|
@@ -1606,6 +1607,7 @@ public class DynamicHlsController : BaseJellyfinApiController
|
|
|
var segmentFormat = string.Empty;
|
|
|
var segmentContainer = outputExtension.TrimStart('.');
|
|
|
var inputModifier = _encodingHelper.GetInputModifier(state, _encodingOptions, segmentContainer);
|
|
|
+ var hlsArguments = $"-hls_playlist_type {(isEventPlaylist ? "event" : "vod")} -hls_list_size 0";
|
|
|
|
|
|
if (string.Equals(segmentContainer, "ts", StringComparison.OrdinalIgnoreCase))
|
|
|
{
|
|
@@ -1621,6 +1623,11 @@ public class DynamicHlsController : BaseJellyfinApiController
|
|
|
false => " -hls_fmp4_init_filename \"" + outputFileNameWithoutExtension + "-1" + outputExtension + "\""
|
|
|
};
|
|
|
|
|
|
+ var useLegacySegmentOption = _mediaEncoder.EncoderVersion < _minFFmpegHlsSegmentOptions;
|
|
|
+
|
|
|
+ // fMP4 needs this flag to write the audio packet DTS/PTS including the initial delay into MOOF::TRAF::TFDT
|
|
|
+ hlsArguments += $" {(useLegacySegmentOption ? "-hls_ts_options" : "-hls_segment_options")} movflags=+frag_discont";
|
|
|
+
|
|
|
segmentFormat = "fmp4" + outputFmp4HeaderArg;
|
|
|
}
|
|
|
else
|
|
@@ -1642,8 +1649,6 @@ public class DynamicHlsController : BaseJellyfinApiController
|
|
|
Path.GetFileNameWithoutExtension(outputPath));
|
|
|
}
|
|
|
|
|
|
- var hlsArguments = $"-hls_playlist_type {(isEventPlaylist ? "event" : "vod")} -hls_list_size 0";
|
|
|
-
|
|
|
return string.Format(
|
|
|
CultureInfo.InvariantCulture,
|
|
|
"{0} {1} -map_metadata -1 -map_chapters -1 -threads {2} {3} {4} {5} -copyts -avoid_negative_ts disabled -max_muxing_queue_size {6} -f hls -max_delay 5000000 -hls_time {7} -hls_segment_type {8} -start_number {9}{10} -hls_segment_filename \"{11}\" {12} -y \"{13}\"",
|