|
@@ -279,32 +279,7 @@ namespace MediaBrowser.Api.Playback
|
|
|
return Math.Max(Environment.ProcessorCount - 1, 2);
|
|
|
}
|
|
|
|
|
|
- // Use more when this is true. -re will keep cpu usage under control
|
|
|
- if (state.ReadInputAtNativeFramerate)
|
|
|
- {
|
|
|
- if (isWebm)
|
|
|
- {
|
|
|
- return Math.Max(Environment.ProcessorCount - 1, 2);
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- // Webm: http://www.webmproject.org/docs/encoder-parameters/
|
|
|
- // The decoder will usually automatically use an appropriate number of threads according to how many cores are available but it can only use multiple threads
|
|
|
- // for the coefficient data if the encoder selected --token-parts > 0 at encode time.
|
|
|
-
|
|
|
- switch (GetQualitySetting())
|
|
|
- {
|
|
|
- case EncodingQuality.HighSpeed:
|
|
|
- return 2;
|
|
|
- case EncodingQuality.HighQuality:
|
|
|
- return 2;
|
|
|
- case EncodingQuality.MaxQuality:
|
|
|
- return isWebm ? Math.Max(Environment.ProcessorCount - 1, 2) : 0;
|
|
|
- default:
|
|
|
- throw new Exception("Unrecognized MediaEncodingQuality value.");
|
|
|
- }
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
protected string H264Encoder
|
|
@@ -338,31 +313,38 @@ namespace MediaBrowser.Api.Playback
|
|
|
|
|
|
var qualitySetting = GetQualitySetting();
|
|
|
|
|
|
- if (string.Equals(videoCodec, H264Encoder, StringComparison.OrdinalIgnoreCase))
|
|
|
+ if (string.Equals(videoCodec, "libx264", StringComparison.OrdinalIgnoreCase))
|
|
|
{
|
|
|
+ param = "-preset superfast";
|
|
|
+
|
|
|
switch (qualitySetting)
|
|
|
{
|
|
|
case EncodingQuality.HighSpeed:
|
|
|
- param = "-preset superfast";
|
|
|
+ param += " -crf 23";
|
|
|
break;
|
|
|
case EncodingQuality.HighQuality:
|
|
|
- param = "-preset superfast";
|
|
|
+ param += " -crf 20";
|
|
|
break;
|
|
|
case EncodingQuality.MaxQuality:
|
|
|
- param = "-preset superfast";
|
|
|
+ param += " -crf 18";
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ else if (string.Equals(videoCodec, "libx265", StringComparison.OrdinalIgnoreCase))
|
|
|
+ {
|
|
|
+ param = "-preset fast";
|
|
|
|
|
|
switch (qualitySetting)
|
|
|
{
|
|
|
case EncodingQuality.HighSpeed:
|
|
|
- param += " -crf 23";
|
|
|
+ param += " -crf 28";
|
|
|
break;
|
|
|
case EncodingQuality.HighQuality:
|
|
|
- param += " -crf 20";
|
|
|
+ param += " -crf 25";
|
|
|
break;
|
|
|
case EncodingQuality.MaxQuality:
|
|
|
- param += " -crf 18";
|
|
|
+ param += " -crf 21";
|
|
|
break;
|
|
|
}
|
|
|
}
|