|
@@ -355,10 +355,10 @@ namespace MediaBrowser.Api.Playback
|
|
param += " -crf 18";
|
|
param += " -crf 18";
|
|
break;
|
|
break;
|
|
case EncodingQuality.HighQuality:
|
|
case EncodingQuality.HighQuality:
|
|
- param += " -crf 14";
|
|
|
|
|
|
+ param += " -crf 10";
|
|
break;
|
|
break;
|
|
case EncodingQuality.MaxQuality:
|
|
case EncodingQuality.MaxQuality:
|
|
- param += " -crf 10";
|
|
|
|
|
|
+ param += " -crf 4";
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -968,7 +968,35 @@ namespace MediaBrowser.Api.Playback
|
|
|
|
|
|
protected int? GetVideoBitrateParamValue(StreamState state)
|
|
protected int? GetVideoBitrateParamValue(StreamState state)
|
|
{
|
|
{
|
|
- return state.VideoRequest.VideoBitRate;
|
|
|
|
|
|
+ var bitrate = state.VideoRequest.VideoBitRate;
|
|
|
|
+
|
|
|
|
+ if (state.VideoStream != null)
|
|
|
|
+ {
|
|
|
|
+ var isUpscaling = false;
|
|
|
|
+
|
|
|
|
+ if (state.VideoRequest.Height.HasValue && state.VideoStream.Height.HasValue &&
|
|
|
|
+ state.VideoRequest.Height.Value > state.VideoStream.Height.Value)
|
|
|
|
+ {
|
|
|
|
+ isUpscaling = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (state.VideoRequest.Width.HasValue && state.VideoStream.Width.HasValue &&
|
|
|
|
+ state.VideoRequest.Width.Value > state.VideoStream.Width.Value)
|
|
|
|
+ {
|
|
|
|
+ isUpscaling = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Don't allow bitrate increases unless upscaling
|
|
|
|
+ if (!isUpscaling)
|
|
|
|
+ {
|
|
|
|
+ if (bitrate.HasValue && state.VideoStream.BitRate.HasValue)
|
|
|
|
+ {
|
|
|
|
+ bitrate = Math.Min(bitrate.Value, state.VideoStream.BitRate.Value);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return bitrate;
|
|
}
|
|
}
|
|
|
|
|
|
protected string GetVideoBitrateParam(StreamState state, string videoCodec, bool isHls)
|
|
protected string GetVideoBitrateParam(StreamState state, string videoCodec, bool isHls)
|