mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-08 23:00:51 +02:00
configure h265 params
This commit is contained in:
parent
651f2a2aec
commit
a1f92f3de3
|
@ -279,32 +279,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
return Math.Max(Environment.ProcessorCount - 1, 2);
|
return Math.Max(Environment.ProcessorCount - 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use more when this is true. -re will keep cpu usage under control
|
return 0;
|
||||||
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.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string H264Encoder
|
protected string H264Encoder
|
||||||
|
@ -338,20 +313,9 @@ namespace MediaBrowser.Api.Playback
|
||||||
|
|
||||||
var qualitySetting = GetQualitySetting();
|
var qualitySetting = GetQualitySetting();
|
||||||
|
|
||||||
if (string.Equals(videoCodec, H264Encoder, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(videoCodec, "libx264", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
switch (qualitySetting)
|
param = "-preset superfast";
|
||||||
{
|
|
||||||
case EncodingQuality.HighSpeed:
|
|
||||||
param = "-preset superfast";
|
|
||||||
break;
|
|
||||||
case EncodingQuality.HighQuality:
|
|
||||||
param = "-preset superfast";
|
|
||||||
break;
|
|
||||||
case EncodingQuality.MaxQuality:
|
|
||||||
param = "-preset superfast";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (qualitySetting)
|
switch (qualitySetting)
|
||||||
{
|
{
|
||||||
|
@ -367,6 +331,24 @@ namespace MediaBrowser.Api.Playback
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (string.Equals(videoCodec, "libx265", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
param = "-preset fast";
|
||||||
|
|
||||||
|
switch (qualitySetting)
|
||||||
|
{
|
||||||
|
case EncodingQuality.HighSpeed:
|
||||||
|
param += " -crf 28";
|
||||||
|
break;
|
||||||
|
case EncodingQuality.HighQuality:
|
||||||
|
param += " -crf 25";
|
||||||
|
break;
|
||||||
|
case EncodingQuality.MaxQuality:
|
||||||
|
param += " -crf 21";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// webm
|
// webm
|
||||||
else if (string.Equals(videoCodec, "libvpx", StringComparison.OrdinalIgnoreCase))
|
else if (string.Equals(videoCodec, "libvpx", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
|
|
@ -317,32 +317,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
return Math.Max(Environment.ProcessorCount - 1, 2);
|
return Math.Max(Environment.ProcessorCount - 1, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use more when this is true. -re will keep cpu usage under control
|
return 0;
|
||||||
if (job.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.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EncodingQuality GetQualitySetting()
|
protected EncodingQuality GetQualitySetting()
|
||||||
|
@ -650,18 +625,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
|
|
||||||
if (string.Equals(videoCodec, "libx264", StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(videoCodec, "libx264", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
switch (qualitySetting)
|
param = "-preset superfast";
|
||||||
{
|
|
||||||
case EncodingQuality.HighSpeed:
|
|
||||||
param = "-preset superfast";
|
|
||||||
break;
|
|
||||||
case EncodingQuality.HighQuality:
|
|
||||||
param = "-preset superfast";
|
|
||||||
break;
|
|
||||||
case EncodingQuality.MaxQuality:
|
|
||||||
param = "-preset superfast";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (qualitySetting)
|
switch (qualitySetting)
|
||||||
{
|
{
|
||||||
|
@ -677,6 +641,24 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (string.Equals(videoCodec, "libx265", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
param = "-preset fast";
|
||||||
|
|
||||||
|
switch (qualitySetting)
|
||||||
|
{
|
||||||
|
case EncodingQuality.HighSpeed:
|
||||||
|
param += " -crf 28";
|
||||||
|
break;
|
||||||
|
case EncodingQuality.HighQuality:
|
||||||
|
param += " -crf 25";
|
||||||
|
break;
|
||||||
|
case EncodingQuality.MaxQuality:
|
||||||
|
param += " -crf 21";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// webm
|
// webm
|
||||||
else if (string.Equals(videoCodec, "libvpx", StringComparison.OrdinalIgnoreCase))
|
else if (string.Equals(videoCodec, "libvpx", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,6 +37,11 @@ namespace MediaBrowser.Server.Implementations.Intros
|
||||||
|
|
||||||
public async Task<IEnumerable<IntroInfo>> GetIntros(BaseItem item, User user)
|
public async Task<IEnumerable<IntroInfo>> GetIntros(BaseItem item, User user)
|
||||||
{
|
{
|
||||||
|
if (!user.Configuration.EnableCinemaMode)
|
||||||
|
{
|
||||||
|
return new List<IntroInfo>();
|
||||||
|
}
|
||||||
|
|
||||||
var config = GetOptions();
|
var config = GetOptions();
|
||||||
|
|
||||||
if (item is Movie)
|
if (item is Movie)
|
||||||
|
|
|
@ -88,6 +88,7 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg
|
||||||
var required = new[]
|
var required = new[]
|
||||||
{
|
{
|
||||||
"libx264",
|
"libx264",
|
||||||
|
"libx265",
|
||||||
"mpeg4",
|
"mpeg4",
|
||||||
"msmpeg4",
|
"msmpeg4",
|
||||||
"libvpx",
|
"libvpx",
|
||||||
|
|
Loading…
Reference in a new issue