|
@@ -51,6 +51,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
private readonly Version _minFFmpegOclCuTonemapMode = new Version(5, 1, 3);
|
|
private readonly Version _minFFmpegOclCuTonemapMode = new Version(5, 1, 3);
|
|
private readonly Version _minFFmpegSvtAv1Params = new Version(5, 1);
|
|
private readonly Version _minFFmpegSvtAv1Params = new Version(5, 1);
|
|
private readonly Version _minFFmpegVaapiH26xEncA53CcSei = new Version(6, 0);
|
|
private readonly Version _minFFmpegVaapiH26xEncA53CcSei = new Version(6, 0);
|
|
|
|
+ private readonly Version _minFFmpegAutoscaleOption = new Version(4, 4);
|
|
|
|
+ private readonly Version _minFFmpegReadrateOption = new Version(5, 0);
|
|
|
|
|
|
private static readonly string[] _videoProfilesH264 = new[]
|
|
private static readonly string[] _videoProfilesH264 = new[]
|
|
{
|
|
{
|
|
@@ -1221,7 +1223,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
|
|
|
// Disable auto inserted SW scaler for HW decoders in case of changed resolution.
|
|
// Disable auto inserted SW scaler for HW decoders in case of changed resolution.
|
|
var isSwDecoder = string.IsNullOrEmpty(GetHardwareVideoDecoder(state, options));
|
|
var isSwDecoder = string.IsNullOrEmpty(GetHardwareVideoDecoder(state, options));
|
|
- if (!isSwDecoder && _mediaEncoder.EncoderVersion >= new Version(4, 4))
|
|
|
|
|
|
+ if (!isSwDecoder && _mediaEncoder.EncoderVersion >= _minFFmpegAutoscaleOption)
|
|
{
|
|
{
|
|
arg.Append(" -noautoscale");
|
|
arg.Append(" -noautoscale");
|
|
}
|
|
}
|
|
@@ -6393,6 +6395,16 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
{
|
|
{
|
|
inputModifier += " -re";
|
|
inputModifier += " -re";
|
|
}
|
|
}
|
|
|
|
+ else if (encodingOptions.EnableSegmentDeletion
|
|
|
|
+ && state.VideoStream is not null
|
|
|
|
+ && state.TranscodingType == TranscodingJobType.Hls
|
|
|
|
+ && IsCopyCodec(state.OutputVideoCodec)
|
|
|
|
+ && _mediaEncoder.EncoderVersion >= _minFFmpegReadrateOption)
|
|
|
|
+ {
|
|
|
|
+ // Set an input read rate limit 10x for using SegmentDeletion with stream-copy
|
|
|
|
+ // to prevent ffmpeg from exiting prematurely (due to fast drive)
|
|
|
|
+ inputModifier += " -readrate 10";
|
|
|
|
+ }
|
|
|
|
|
|
var flags = new List<string>();
|
|
var flags = new List<string>();
|
|
if (state.IgnoreInputDts)
|
|
if (state.IgnoreInputDts)
|