浏览代码

configure h265 params

Luke Pulverenti 10 年之前
父节点
当前提交
a1f92f3de3

+ 15 - 33
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -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;
                 }
             }

+ 14 - 32
MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs

@@ -317,32 +317,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
                 return Math.Max(Environment.ProcessorCount - 1, 2);
             }
 
-            // Use more when this is true. -re will keep cpu usage under control
-            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.");
-            }
+            return 0;
         }
 
         protected EncodingQuality GetQualitySetting()
@@ -650,29 +625,36 @@ namespace MediaBrowser.MediaEncoding.Encoder
 
             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;
                 }
             }

+ 5 - 0
MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs

@@ -37,6 +37,11 @@ namespace MediaBrowser.Server.Implementations.Intros
 
         public async Task<IEnumerable<IntroInfo>> GetIntros(BaseItem item, User user)
         {
+            if (!user.Configuration.EnableCinemaMode)
+            {
+                return new List<IntroInfo>();
+            }
+
             var config = GetOptions();
 
             if (item is Movie)

+ 1 - 0
MediaBrowser.Server.Startup.Common/FFMpeg/FFmpegValidator.cs

@@ -88,6 +88,7 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg
             var required = new[]
             {
                 "libx264",
+                "libx265",
                 "mpeg4",
                 "msmpeg4",
                 "libvpx",