浏览代码

Merge pull request #7054 from matthew-jones-uk/disable-embedded-subs

Cody Robibero 3 年之前
父节点
当前提交
603b6fe173

+ 1 - 0
CONTRIBUTORS.md

@@ -217,3 +217,4 @@
  - [olsh](https://github.com/olsh)
  - [lbenini](https://github.com/lbenini)
  - [gnuyent](https://github.com/gnuyent)
+ - [Matthew Jones](https://github.com/matthew-jones-uk)

+ 30 - 0
MediaBrowser.Model/Configuration/EmbeddedSubtitleOptions.cs

@@ -0,0 +1,30 @@
+namespace MediaBrowser.Model.Configuration
+{
+    /// <summary>
+    /// An enum representing the options to disable embedded subs.
+    /// </summary>
+    public enum EmbeddedSubtitleOptions
+    {
+
+        /// <summary>
+        /// Allow all embedded subs.
+        /// </summary>
+        AllowAll = 0,
+
+        /// <summary>
+        /// Allow only embedded subs that are text based.
+        /// </summary>
+        AllowText = 1,
+
+        /// <summary>
+        /// Allow only embedded subs that are image based.
+        /// </summary>
+        AllowImage = 2,
+
+        /// <summary>
+        /// Disable all embedded subs.
+        /// </summary>
+        AllowNone = 3,
+    }
+
+}

+ 3 - 0
MediaBrowser.Model/Configuration/LibraryOptions.cs

@@ -15,6 +15,7 @@ namespace MediaBrowser.Model.Configuration
 
             SkipSubtitlesIfAudioTrackMatches = true;
             RequirePerfectSubtitleMatch = true;
+            AllowEmbeddedSubtitles = EmbeddedSubtitleOptions.AllowAll;
 
             AutomaticallyAddToCollection = true;
             EnablePhotos = true;
@@ -84,6 +85,8 @@ namespace MediaBrowser.Model.Configuration
 
         public bool AutomaticallyAddToCollection { get; set; }
 
+        public EmbeddedSubtitleOptions AllowEmbeddedSubtitles { get; set; }
+
         public TypeOptions[] TypeOptions { get; set; }
 
         public TypeOptions? GetTypeOptions(string type)

+ 12 - 0
MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs

@@ -229,6 +229,18 @@ namespace MediaBrowser.Providers.MediaInfo
                 video.Video3DFormat ??= mediaInfo.Video3DFormat;
             }
 
+            if (libraryOptions.AllowEmbeddedSubtitles == EmbeddedSubtitleOptions.AllowText || libraryOptions.AllowEmbeddedSubtitles == EmbeddedSubtitleOptions.AllowNone)
+            {
+                _logger.LogDebug("Disabling embedded image subtitles for {Path} due to DisableEmbeddedImageSubtitles setting", video.Path);
+                mediaStreams.RemoveAll(i => i.Type == MediaStreamType.Subtitle && !i.IsExternal && !i.IsTextSubtitleStream);
+            }
+
+            if (libraryOptions.AllowEmbeddedSubtitles == EmbeddedSubtitleOptions.AllowImage || libraryOptions.AllowEmbeddedSubtitles == EmbeddedSubtitleOptions.AllowNone)
+            {
+                _logger.LogDebug("Disabling embedded text subtitles for {Path} due to DisableEmbeddedTextSubtitles setting", video.Path);
+                mediaStreams.RemoveAll(i => i.Type == MediaStreamType.Subtitle && !i.IsExternal && i.IsTextSubtitleStream);
+            }
+
             var videoStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Video);
 
             video.Height = videoStream?.Height ?? 0;