Sfoglia il codice sorgente

add configurable encoding params

Luke Pulverenti 8 anni fa
parent
commit
9c7eef891b

+ 18 - 2
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -346,11 +346,27 @@ namespace MediaBrowser.Api.Playback
             var isVc1 = state.VideoStream != null &&
                 string.Equals(state.VideoStream.Codec, "vc1", StringComparison.OrdinalIgnoreCase);
 
+            var encodingOptions = ApiEntryPoint.Instance.GetEncodingOptions();
+
             if (string.Equals(videoCodec, "libx264", StringComparison.OrdinalIgnoreCase))
             {
-                param = "-preset superfast";
+                if (!string.IsNullOrWhiteSpace(encodingOptions.H264Preset))
+                {
+                    param = "-preset " + encodingOptions.H264Preset;
+                }
+                else
+                {
+                    param = "-preset superfast";
+                }
 
-                param += " -crf 23";
+                if (encodingOptions.H264Crf >= 0 && encodingOptions.H264Crf <= 51)
+                {
+                    param = " -crf " + encodingOptions.H264Crf.ToString(CultureInfo.InvariantCulture);
+                }
+                else
+                {
+                    param += " -crf 23";
+                }
             }
 
             else if (string.Equals(videoCodec, "libx265", StringComparison.OrdinalIgnoreCase))

+ 2 - 1
MediaBrowser.Controller/Entities/UserView.cs

@@ -113,7 +113,8 @@ namespace MediaBrowser.Controller.Entities
         {
             var standaloneTypes = new List<string>
             {
-                CollectionType.Playlists
+                CollectionType.Playlists,
+                CollectionType.BoxSets
             };
 
             var collectionFolder = folder as ICollectionFolder;

+ 6 - 1
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -928,7 +928,12 @@ namespace MediaBrowser.MediaEncoding.Encoder
                 {
                     StartProcess(processWrapper);
 
-                    ranToCompletion = process.WaitForExit(10000);
+                    var timeoutMs = ConfigurationManager.Configuration.ImageExtractionTimeoutMs;
+                    if (timeoutMs <= 0)
+                    {
+                        timeoutMs = 10000;
+                    }
+                    ranToCompletion = process.WaitForExit(timeoutMs);
 
                     if (!ranToCompletion)
                     {

+ 4 - 0
MediaBrowser.Model/Configuration/EncodingOptions.cs

@@ -11,6 +11,8 @@ namespace MediaBrowser.Model.Configuration
         public string HardwareAccelerationType { get; set; }
         public string EncoderAppPath { get; set; }
         public string VaapiDevice { get; set; }
+        public int H264Crf { get; set; }
+        public string H264Preset { get; set; }
 
         public EncodingOptions()
         {
@@ -19,6 +21,8 @@ namespace MediaBrowser.Model.Configuration
             ThrottleDelaySeconds = 180;
             EncodingThreadCount = -1;
             VaapiDevice = "/dev/dri/card0";
+            H264Crf = 23;
+            H264Preset = "superfast";
         }
     }
 }

+ 2 - 0
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -207,6 +207,7 @@ namespace MediaBrowser.Model.Configuration
         public bool EnableChannelView { get; set; }
         public bool EnableExternalContentInSuggestions { get; set; }
 
+        public int ImageExtractionTimeoutMs { get; set; }
         /// <summary>
         /// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
         /// </summary>
@@ -216,6 +217,7 @@ namespace MediaBrowser.Model.Configuration
             Migrations = new string[] { };
             CodecsUsed = new string[] { };
             SqliteCacheSize = 0;
+            ImageExtractionTimeoutMs = 10000;
 
             EnableLocalizedGuids = true;
             DisplaySpecialsWithinSeasons = true;

+ 14 - 2
MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs

@@ -14,17 +14,20 @@ using System.IO;
 using System.Linq;
 using System.Threading.Tasks;
 using CommonIO;
+using MediaBrowser.Controller.LiveTv;
 
 namespace MediaBrowser.Server.Implementations.UserViews
 {
     public class DynamicImageProvider : BaseDynamicImageProvider<UserView>
     {
         private readonly IUserManager _userManager;
+        private readonly ILibraryManager _libraryManager;
 
-        public DynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor, IUserManager userManager)
+        public DynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor, IUserManager userManager, ILibraryManager libraryManager)
             : base(fileSystem, providerManager, applicationPaths, imageProcessor)
         {
             _userManager = userManager;
+            _libraryManager = libraryManager;
         }
 
         public override IEnumerable<ImageType> GetSupportedImages(IHasImages item)
@@ -50,7 +53,15 @@ namespace MediaBrowser.Server.Implementations.UserViews
 
             if (string.Equals(view.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase))
             {
-                return new List<BaseItem>();
+                var programs = _libraryManager.GetItemList(new InternalItemsQuery
+                {
+                    IncludeItemTypes = new[] { typeof(LiveTvProgram).Name },
+                    ImageTypes = new[] { ImageType.Primary },
+                    Limit = 30,
+                    IsMovie = true
+                }).ToList();
+
+                return GetFinalItems(programs).ToList();
             }
 
             if (string.Equals(view.ViewType, SpecialFolder.MovieGenre, StringComparison.OrdinalIgnoreCase) ||
@@ -147,6 +158,7 @@ namespace MediaBrowser.Server.Implementations.UserViews
                 CollectionType.MusicVideos,
                 CollectionType.HomeVideos,
                 CollectionType.BoxSets,
+                CollectionType.LiveTv,
                 CollectionType.Playlists,
                 CollectionType.Photos,
                 string.Empty